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