SQL で各行が 1 回だけカウントされるようにしながら値の合計を計算する方法

Barbara Streisand
リリース: 2024-11-08 05:56:02
オリジナル
661 人が閲覧しました

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

個別の値に SUM() を使用して SQL で行をグループ化する

MySQL クエリで、次の値の合計を計算したいとします。各行が 1 回だけカウントされるようにしながら、変換テーブルを作成します。これを実現するには、DISTINCT キーワードを SUM() 関数と組み合わせて使用​​します。ただし、重複行によって SUM() の結果が増大するという問題が発生しています。

この問題を解決するには、テーブル内の主キーの関係を考慮してください。 conversions.id がコンバージョン テーブルの主キーであり、stats.id が統計テーブルの主キーである場合、各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 グループ。各行が 1 回だけカウントされるようにします。

以上がSQL で各行が 1 回だけカウントされるようにしながら値の合計を計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート