在SQL 中使用SUM() 將不同值分組
在MySQL 查詢中,您想要計算下列值的總和轉換表,同時確保每行僅計算一次。為了實現這一點,您需要將 DISTINCT 關鍵字與 SUM() 函數結合使用。但是,您遇到了重複行導致 SUM() 結果膨脹的問題。
要解決此問題,請考慮表中的主鍵關係。如果 conversions.id 是 conversions 表的主鍵,stats.id 是 stats 表的主鍵,那麼每個 conversions.id 對於單一 links.id 來說都是唯一的。
基於這種理解,您可以重構查詢以計算每個不同 conversions.id 的 conversions.value 總和,然後將結果除以每個 links.id 組內的總行數。這將為您提供所需的不同值的總和。
這是修改後的查詢:
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;
此查詢應有效計算每個 links.id 群組中每個不同 conversions.id 的 conversions.value 總和,確保每行僅計數一次。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3