sql >> データベース >  >> RDS >> Mysql

SELECTで複数の列が選択されている場合、GROUPBYおよびORDERBYを使用したクエリが機能しない

    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で指定した他のいくつかの列で実行される操作があります 句(ここではcol2col3 )出力で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
    

    フィールドに集計を適用する必要がないためです(ここではcol2GROUP BYに存在します 条項。



    1. RでRPostgresqlクエリを中断するにはどうすればよいですか

    2. すべてのニュースとすべてのコメントを取得する

    3. Mysqlデータベースへの複数のアップロード画像

    4. Mysqlの連続する行の距離(経度、緯度)の合計を計算するためのクエリ