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

SQLで2つの列でグループ化する方法

    問題:

    いくつかの統計を数えることができるように、データを2つの列でグループ化する必要があります。

    例:

    order テーブルには、order_date列があります 、product_idcustomer_id 、およびnumber 。各顧客が毎日購入した製品の数を数えたいと考えています。

    order テーブルは次のようになります:

    番号
    order_date product_id customer_id
    2020-11-25 7 1 1
    2020-11-25 12 1 3
    2020-11-26 53 1 2
    2020-11-26 1 2 4
    2020-11-26 3 2 1
    2020-11-26 16 2 7
    2020-11-26 3 3 2
    2020-11-27 6 3 1

    解決策:

    SELECT
      order_date,
      customer_id,
      SUM(number) AS products_number
    FROM order
    

    結果は次のとおりです。

    order_date customer_id products_number
    2020-11-26 3 2
    2020-11-27 3 1
    2020-11-26 2 12
    2020-11-25 1 4
    2020-11-26 1 2

    ディスカッション:

    2つの列でグループ化するには、GROUP BYを使用するだけです。 2列あり。列名は、GROUP BYの後にリストする必要があります キーワードで、コンマで区切ります。グループは、両方の列の値に基づいて作成されます。値のペアごとに、個別のグループが作成されます(例:('2020-11-25', 1) )。以下の表を見てください。各グループは異なる色で表示されています:

    番号
    order_date customer_id product_id
    2020-11-25 1 7 1
    2020-11-25 1 12 3
    2020-11-26 1 53 2
    2020-11-26 2 1 4
    2020-11-26 2 3 1
    2020-11-26 2 16 7
    2020-11-26 3 3 2
    2020-11-27 3 6 1

    一方または両方の列にNULLがある場合 値の場合、これらの値は個別のグループとして扱われます(例:('2020-11-26', NULL)(NULL, 5) または(NULL, NULL)

    一方、NULLsがある場合 集計関数を適用する列のNULL 値は単に省略されます。 (この例では、集計関数はSUM()です。 列はnumber )。数値が2の場合 、 1 、および NULL グループの1つとして、SUM(number) 3に等しくなります (2 および1 一緒に追加され、NULL 省略されます。)

    同様に、任意の数の列でグループ化できます。列名をGROUP BYに書き込むだけです。 句を使用し、コンマで区切ります。


    1. SQL Serverの高可用性:既存のフェールオーバークラスターインスタンスに新しいディスクを追加します

    2. SQLServer2019でのデータベースリカバリの高速化

    3. データベース管理用のMySQLバックアップおよび復元コマンド

    4. ネットワーク経由でOracleデータベースにアクセスする方法は?