如何在MySQL中計算不同轉換的準確轉換值總和?

DDD
發布: 2024-11-04 04:20:02
原創
148 人瀏覽過

How to Calculate Accurate Sum of Conversion Values for Distinct Conversions in MySQL?

MySQL 中使用 sum() 進行獨特的行聚合

SQL 查詢通常涉及 sum() 等聚合函數來計算數值摘要。處理分組資料時,必須僅對每個唯一記錄進行一次計數,以避免結果膨脹。

考慮以下查詢:

<code class="sql">SELECT links.id,
       count(DISTINCT stats.id) as clicks,
       count(DISTINCT conversions.id) as conversions,
       sum(conversions.value) 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>
登入後複製

目標是計算不同點擊的數量、轉換次數,並對每個連結對應的轉換值求和。但是,由於分組,sum(conversions.value) 聚合會對每個轉換值進行多次計數。

為了精確計算每個唯一轉換的總和,我們需要調整表達式。假設 conversions.id 是轉換錶中的主鍵,我們可以利用不同轉換次數與記錄總數之間的關係。

對於每個 conversions.id,最多有一個連結.id 受到影響。因此,一次非重複轉換的所有轉換值的總和可以透過將實際總和(conversions.value) 乘以非重複轉換次數並除以群組中的記錄總數來計算:

<code class="sql">sum(conversions.value) * count(DISTINCT conversions.id) / count(*)</code>
登入後複製

將此調整合併到查詢結果中:

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

此修改後的查詢有效地對每個唯一轉換的轉換值進行求和,為分組資料提供準確的聚合結果。

以上是如何在MySQL中計算不同轉換的準確轉換值總和?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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