如何在 MySQL 中計算不同行的 SUM()?

DDD
發布: 2024-11-04 15:32:02
原創
385 人瀏覽過

How to Calculate SUM() for Distinct Rows in MySQL?

MySQL 中不同行的SUM()

在MySQL 查詢中使用SUM() 聚合函數時,請考慮如何使用SUM()至關重要對不同的行進行計數以確保計算準確。在提供的範例中,目標是對不同的轉換進行計數並對它們的值求和。

在原始查詢中,SUM(conversions.value) 函數由於 GROUP BY 會對每行的值進行多次計數連結.id。為了解決這個問題,我們需要只對不同的 conversions.id 求和 conversions.value。

仔細的分析顯示 conversions.id 和 stats.id 都是主鍵。因此,我們可以假設對於每個 conversions.id,都有一個唯一的 links.id。

為了獲得所需的結果,我們可以利用代表點擊和轉換的兩組集合的笛卡爾積。可以使用 count(distinct conversions.id) 匯出唯一轉換次數。

轉換值總和可以將其乘以唯一轉換次數除以總計數來校正:sum(conversions.id)。 value)count(distinct conversions.id)/count()

合併此修改會產生以下修改後的查詢:

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;
登入後複製

此改進的查詢有效地消除了重複行在conversion_value 的計算中,確保不同轉換的準確總和。

以上是如何在 MySQL 中計算不同行的 SUM()?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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