簡體   English   中英

SQL:GROUP BY 用於數字范圍?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM