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

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

Barbara Streisand
發布: 2024-11-03 19:07:29
原創
580 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板