GROUP BY
を使用する場合は、注意が必要です。 。 GROUP BY
が何であるかを理解したら そうです、あなたは自分で問題を知っているでしょう。データを集計します。つまり、生のエントリに対して何らかの操作を実行し、集計関数(SUM、COUNT、AVGなど)が適用されたエントリの数を減らして、データを削減します。
GROUP BY
で指定するフィールド 句は、目的の集計/ロールアップのレベルを表します。
SELECT col2, col3 FROM tbl WHERE col1 IS NULL GROUP BY col1 ORDER BY col1
ここでは、col1
で集計を実行しようとしています。 レベル。つまり、列col1
に存在するすべての個別の値に対して 、SELECT
で指定した他のいくつかの列で実行される操作があります 句(ここではcol2
、col3
)出力でcol1
に繰り返しのない値が含まれるようにします およびcol2
のロールアップされた値 およびcol3
それぞれの異なるcol1
に対して 適用する関数(SUM、COUNT、AVGなど)に基づく値。
この機能をどのように適用しますか?それが上記のクエリに欠けているものです。これを解決するには、SELECT
に存在するフィールドに集計関数を適用する必要があります 句はありますが、GROUP BY
にはありません 句。 SUMの例を見て、これを試してください:
SELECT SUM(col2), SUM(col3) FROM tbl WHERE col1 IS NULL GROUP BY col1 ORDER BY col1
または、より良いアイデアとして、WHERE
を削除します 次のコマンドを実行して、出力をフィルタリングおよびチェックします。
SELECT col1, SUM(col2), SUM(col3) FROM tbl GROUP BY col1 ORDER BY col1
さらに、他のクエリを実行する理由
SELECT col2 FROM tbl WHERE col1 IS NULL GROUP BY col2 ORDER BY col2
フィールドに集計を適用する必要がないためです(ここではcol2
)GROUP BY
に存在します 条項。