在SQL 中使用SUM() 將不同值分組
在MySQL 查詢中,您想要計算以下值的總和轉換表,同時確保每行僅計算一次。為了實現這一點,您需要將 DISTINCT 關鍵字與 SUM() 函數結合使用。但是,您遇到了重複行導致 SUM() 結果膨脹的問題。
要解決此問題,請考慮表中的主鍵關係。如果 conversions.id 是 conversions 表的主鍵,stats.id 是 stats 表的主鍵,那麼每個 conversions.id 對於單一 links.id 都是唯一的。
基於這種理解,您可以重構查詢以計算每個不同 conversions.id 的 conversions.value 總和,然後將結果除以每個 links.id 組內的總行數。這將為您提供所需的不同值的總和。
這是修改後的查詢:
<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>
此查詢應有效計算內每個不同conversions.id 的conversions.value 總和每個links.id 組,確保每行僅計數一次。
以上是如何在 SQL 中計算某個值的總和,同時確保每行只計算一次?的詳細內容。更多資訊請關注PHP中文網其他相關文章!