如何在 SQL 中計算某個值的總和,同時確保每行只計算一次?

Barbara Streisand
發布: 2024-11-08 05:56:02
原創
651 人瀏覽過

How To Calculate the Sum of a Value in SQL While Ensuring Each Row is Counted Only Once?

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

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