[英]SQL: GROUP BY for number ranges?
我是第一次發帖,也是 SQL 新手,我的同事也是。
我有一列數字(我們稱之為“數字”),其中的值范圍為 1-9999。
我需要創建一個分組列(我們稱之為“數字級別”)並將 AA 的值分配給 1-999 的所有數字、1000-6999 的 BB 和 7000-9999 的 CC。
因此,最終輸出將如下所示(無需訂購輸出):
numbers | numbers level
-------------------------------------
136 | AA
2935 | BB
4288 | BB
8987 | CC
436 | AA
3737 | BB
有沒有簡單的方法來編寫這個腳本,即:通過使用 GROUP BY 子句?
或者那個分組列是否必須已經存在,我只需要用命令填充它?
如果我的問題毫無頭緒,請告訴我,我會盡我所能澄清。
這將是最簡單的 case 語句(假設您使用的是 sql-server;如果沒有,請為正確的版本添加標簽)。
Select [Numbers]
, case when [Numbers] between 1 and 999 then 'AA'
when [Numbers] between 1000 and 6999 then 'BB'
when [Numbers] between 7000 and 9999 then 'CC'
end as [Numbers Level]
from MyTable
如果您的任何數字不屬於這些范圍,它將返回 NULL - 如果發生這種情況時您想要不同的結果,請使用else
。
分組列必須存在,但您可以改用case
。
select nr,
case when nr <= 999 then 'AA'
when nr <= 7000 then 'BB'
else 'CC'
end as NrLevel
from Numbers
在這里你並不真正需要一個組,你可以使用一個簡單的 case 語句來完成它。
SELECT number,
CASE WHEN number between 1 and 999 THEN 'AA'
WHEN number between 1000 and 6999 THEN 'BB'
WHEN number between 7000 and 9999 then 'CC'
END numbers_level
from Number_table
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.