ホームページ >データベース >mysql チュートリアル >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 サイトの他の関連記事を参照してください。