ホームページ >データベース >mysql チュートリアル >SQL の GROUP BY 句を使用してデータを範囲に集約するにはどうすればよいですか?

SQL の GROUP BY 句を使用してデータを範囲に集約するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-17 21:27:11572ブラウズ

How Can I Use SQL's GROUP BY Clause to Aggregate Data into Ranges?

データ範囲集計用の SQL GROUP BY

さまざまな範囲にわたるデータ分布を分析することは、データ分析の重要な側面です。 SQL の GROUP BY 句は、データを事前定義されたグループに集約するための堅牢なメカニズムを提供し、簡潔な概要テーブルとレポートの生成を容易にします。

範囲ベースのグループの作成

データを特定の範囲に分類するには、CASE WHEN ステートメントを利用して、定義された条件に基づいて新しい列に値を割り当てます。この新しく作成された列は、GROUP BY 句を使用してデータをグループ化するための基礎として機能します。

例: スコア範囲のグループ化

特定の間隔 (0 ~ 9、10 ~ 19、20 ~ 29 など) 内のスコアの頻度を決定する必要があるシナリオを考えてみましょう。 次のクエリは、これらのスコア範囲を表す新しい列を構築します:

<code class="language-sql">SELECT
  CASE
    WHEN score BETWEEN 0 AND 9 THEN '0-9'
    WHEN score BETWEEN 10 AND 19 THEN '10-19'
    ELSE '20-99'
  END AS score_range
FROM scores;</code>

このクエリは score_range 列を生成し、各スコアを対応する範囲に割り当てます。

GROUP BY による集計

各範囲内のスコアの数を計算するには、COUNT(*) 句と組み合わせて GROUP BY 集計関数を使用します。以下のクエリはこれを実現します:

<code class="language-sql">SELECT
  score_range,
  COUNT(*) AS score_count
FROM (
  SELECT
    CASE
      WHEN score BETWEEN 0 AND 9 THEN '0-9'
      WHEN score BETWEEN 10 AND 19 THEN '10-19'
      ELSE '20-99'
    END AS score_range
  FROM scores
) AS ranged_scores
GROUP BY
  score_range;</code>

出力

結果の表には、score_rangescore_count の 2 つの列が表示され、定義された範囲にわたるスコア分布の明確な概要が示されます。

以上がSQL の GROUP BY 句を使用してデータを範囲に集約するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。