1. ホーム
  2. sql

[解決済み】SQLで、範囲指定で「グループ化」するには?

2022-04-10 11:35:31

質問

数値カラムを持つテーブルがあるとします(quot;score"と呼ぶことにします)。

各範囲に何回スコアが出現したかを示すカウントのテーブルを作成したい。

例えば

スコア範囲|出現回数
-------------------------------------
   0-9 | 11
  10-19 | 14
  20-29 | 3
   ...       | ...

この例では、0〜9のスコアが11行、10〜19のスコアが14行、20〜29のスコアが3行でした。

これを簡単に設定する方法はありますか? お勧めの方法はありますか?

どのように解決するのですか?

SQL Server 2000では、上位に投票された回答はいずれも正しくありません。おそらく、異なるバージョンを使用していたのでしょう。

以下は、SQL Server 2000での両者の正しいバージョンです。

select t.range as [score range], count(*) as [number of occurences]
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 range
  from scores) t
group by t.range

または

select t.range as [score range], count(*) as [number of occurrences]
from (
      select user_id,
         case when score >= 0 and score< 10 then '0-9'
         when score >= 10 and score< 20 then '10-19'
         else '20-99' end as range
     from scores) t
group by t.range