首頁 >資料庫 >mysql教程 >如何計算分組 SQL 查詢中唯一行的列總和?

如何計算分組 SQL 查詢中唯一行的列總和?

Barbara Streisand
Barbara Streisand原創
2024-11-03 19:07:29583瀏覽

How to Calculate the Sum of a Column for Unique Rows in a Grouped SQL Query?

MYSQL:對唯一行使用sum()

在SQL 查詢中,sum() 函數通常用於計算跨多行的值。但是,在處理分組資料時,必須考慮重複行。在這個特定問題中,使用者的目標是計算轉換表中每個不同行的列 conversions.value 的總和。

提供的查詢最初遇到一個問題,即 sum(conversions.value) 錯誤地計算了由於 GROUP BY 子句,每行的值多次。為了解決這個問題,使用者必須確保只計算唯一行的總和。

解決方案在於利用笛卡爾積的概念,它結合了多個集合的元素。在本例中,這些集合是唯一的點擊和轉換事件。 count(DISTINCT conversions.id) 函數有效刪除重複的轉換行,提供唯一轉換事件的計數。

要計算正確的總和,使用者可以將 sum(conversions.value) 乘以不同的計數轉換並將其除以總行數 (count(*))。此操作可確保僅針對與每個連結關聯的唯一轉換事件計算總和。

解決方案中建議的修改查詢是:

<code class="sql">SELECT links.id, 
       count(DISTINCT stats.id) as clicks, 
       count(DISTINCT conversions.id) as conversions, 
       sum(conversions.value)*count(DISTINCT conversions.id)/count(*) as conversion_value 
FROM links 
LEFT OUTER JOIN stats ON links.id = stats.parent_id 
LEFT OUTER JOIN conversions ON links.id = conversions.link_id 
GROUP BY links.id 
ORDER BY links.created desc;</code>

以上是如何計算分組 SQL 查詢中唯一行的列總和?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn