SQL GROUP BY 句は、データをグループ化および集計するための強力なツールです。これは、特定の基準に基づいてデータをグループ化し、結果として得られたグループに対してアクションを実行する優れた方法を提供します。
GROUP BY の一般的な使用例の 1 つは、日付によるグループ化です。このチュートリアルでは、GROUP BY 句の操作の基礎を学び、それを使用して SQL で日付ごとにデータをグループ化する方法について説明します。
ノート: SQL の基本を理解していることを前提としています。デモンストレーションの目的で、このチュートリアルでは MySQL 8 を使用した例を使用します。ただし、このチュートリアルの概念を他の SQL ベースのデータベース エンジンに自由に移植できます。
サンプルテーブル:
最初のステップは、デモンストレーション用の基本的なテーブルとサンプル データを設定することです。作業したい既存のテーブルがある場合は、このセクションをスキップしてください。
テーブルを作成するには、次のクエリを使用します。
CREATE TABLE トランザクション (
ID int null ではない auto_increment 主キー、
日にち 日にち、
金額 10 進数 ( 10 、 2 )
) ;
テーブルを作成したら、次のようにサンプル データを挿入します。
価値観
( 「2023-01-01」 、 100.00 ) 、
( 「2023-01-02」 、 50.00 ) 、
( 「2023-01-03」 、 75.00 ) 、
( 「2023-01-04」 、 200.00 ) 、
( 「2023-01-05」 、 150.00 ) 、
( 「2023-01-06」 、 175.00 ) 、
( 「2023-01-07」 、 50.00 ) 、
( 「2023-01-08」 、 100.00 ) 、
( 「2023-01-09」 、 25.00 ) 、
( 「2023-01-10」 、 75.00 ) 、
( 「2023-01-11」 、 150.00 ) 、
( 「2023-01-12」 、 200.00 ) 、
( 「2023-01-13」 、 250.00 ) 、
( 「2023-01-14」 、 175.00 ) 、
( 「2023-01-15」 、 150.00 ) 、
( 「2023-01-16」 、 100.00 ) 、
( 「2023-01-17」 、 50.00 ) 、
( 「2023-01-18」 、 75.00 ) ;
これにより、ランダム データがトランザクション テーブルに追加されます。次のように、select ステートメントを使用して結果のテーブルを表示できます。
選択する * トランザクションから。
出力テーブル:
データの準備ができたら、次のステップに進むことができます。
SQL 日付によるグループ化
ご想像のとおり、GROUP BY 句を使用して、特定の値に基づいて特定のテーブル内のデータを分割します。句の構文は次のとおりです。
SELECT 列 1、列 2、...FROM テーブル名
GROUP BY 列 1、列 2、...;
前の構文では、GROUP BY 句を使用して、データをグループ化する列を指定します。
前のテーブルから、次のクエリに示すように、日付列を使用してデータをグループ化できます。
選択する 日にち 、合計 ( 額 ) として 合計金額FROMトランザクション
グループ化 日にち ;
前のクエリは基本的な計算を実行し、sum() 関数を使用して毎日の合計金額を加算します。次に、日付値に基づいてデータをグループ化します。結果のテーブルは次のとおりです。
日付の形式
場合によっては、日付をフォーマットして読みやすくする必要があるかもしれません。例は次のとおりです。
DATE_FORMATを選択してください ( 日にち 、 '%m/%d/%Y' ) として formatted_date、合計 ( 額 ) として 合計金額FROMトランザクション
グループ化 日にち ;
これにより、次のように指定された形式で日付値が返されます。
SQL フィルターの日付範囲
WHERE 句を使用して、結果セットを日付範囲でフィルタリングすることもできます。例は次のとおりです。
DATE_FORMATを選択してください ( 日にち 、 '%m/%d/%Y' ) として formatted_date、合計 ( 額 ) として 合計金額FROMトランザクション
どこ 日にち 間 「2023-01-01」 と 「2023-01-15」
グループ化 日にち ;
結果のテーブルを以下に示します。
ほら、ありますよ!日付値に基づいて特定のテーブルのデータをグループ化する方法。
結論
このチュートリアルでは、SQL の GROUP BY 句を使用して特定の値に基づいてデータを並べ替える基本について説明しました。これにより、GROUP BY 句を使用して日付値に基づいてデータを分割する方法をカバーできるようになりました。