ホームページ >データベース >mysql チュートリアル >SQL で数値データを範囲にグループ化するにはどうすればよいですか?

SQL で数値データを範囲にグループ化するにはどうすればよいですか?

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

How Can I Group Numerical Data into Ranges in SQL?

数値データをビニングするための SQL テクニック

このガイドでは、SQL データベース内の定義された範囲に数値データを分類する方法を説明します。 数値列 (「スコア」など) を含むテーブルがあると想像してください。目標は、各範囲内にあるスコアの数を示す概要を生成することです。

例:

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

Score Range Frequency
0-9 11
10-19 14
20-29 3
... ...

SQL Server 2000 以降でこれを実現する方法は次のとおりです。

方法 1: サブクエリ内の CASE 式

このメソッドは、サブクエリ内の CASE 式を使用して各スコアに範囲ラベルを割り当て、その後に外側のクエリを使用して各範囲内の出現回数をカウントします。

<code class="language-sql">SELECT t.range AS "Score Range", COUNT(*) AS "Frequency"
FROM (
  SELECT score,
         CASE  
           WHEN score BETWEEN 0 AND 9 THEN '0-9'
           WHEN score BETWEEN 10 AND 19 THEN '10-19'
           ELSE '20-99'  -- Handle scores outside defined ranges
         END AS range
  FROM scores
) t
GROUP BY t.range;</code>

方法 2: メイン クエリの CASE 式

あるいは、CASE 式をメインクエリに直接埋め込んで、構造を若干簡素化することもできます。

<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'  -- Handle scores outside defined ranges
    END AS "Score Range",
    COUNT(*) AS "Frequency"
FROM scores
GROUP BY 
    CASE  
        WHEN score BETWEEN 0 AND 9 THEN '0-9'
        WHEN score BETWEEN 10 AND 19 THEN '10-19'
        ELSE '20-99'
    END;</code>

これらの方法は、データを効率的にグループ化してカスタム範囲に要約し、データの分布に関する貴重な洞察を提供します。特定のスコア範囲に一致するように CASE ステートメントを調整してください。 定義された範囲外の値に対するエラー処理を追加することを検討してください。

以上がSQL で数値データを範囲にグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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