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に存在します 条項。