在一列中按多个值分组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在一列中按多个值分组相关的知识,希望对你有一定的参考价值。

我的数据表如下所示:

client   Status
   1       a
   2       b
   3       a
   4       d
   5       d
   6       a
   7       e
   8       b
   9       e
  10       f

假设我想按状态分组,但相反,我希望组状态a,b,d(状态I)作为一个组,e,f(状态II)作为另一组

我希望它最终看起来像这样

status Count
   I      7
  II      3

我该如何编写查询?

答案

您可以运行分组并计入一个语句。

SELECT
  CASE WHEN Status IN ('a', 'b', 'd') THEN 'I' ELSE 'II' END AS Status,
  count(*) as count
FROM Table1
GROUP BY  (CASE WHEN Status IN ('a', 'b', 'd') THEN 'I' ELSE 'II' END)
ORDER BY Status

Result:
Status  count
 I      7
II      3
另一答案

您只需使用CASE语句即可。

SELECT
  CASE WHEN Status IN ('a', 'b', 'd')
    THEN 'I'
  WHEN Status IN ('e', 'f')
    THEN 'II'
  END AS "Status Group",
  count(*) as Count
FROM Table
GROUP BY 1
ORDER BY 1
;
另一答案

你可以使用group by case

declare @table table ( client INT, STATUS Varchar(10))
insert into @table
select 1  , 'a' union all
select 2 ,  'b' union all
select 3  , 'a' union all
select 4  , 'd' union all
select 5  , 'd' union all
select 6  , 'a' union all
select 7  , 'e' union all
select 8  , 'b' union all
select 9  , 'e' union all
select 10 , 'f'

查询:

select clientgroup, count(*) Count from
(
select case when status in ( 'a','b','d') then 'I' else 'II' end clientgroup from @table 
) x group by clientgroup

以上是关于在一列中按多个值分组的主要内容,如果未能解决你的问题,请参考以下文章

Power BI:将项目分组在一列中,具有不同值的其他列显示为几列

Python:在一列中为另一列中的单个值显示多个值

熊猫在一列中替换多个值

SQL 语句 - 在一列中获取多个值

如何在一列中存储数组或多个值

如何根据分组将字符串组合在一列中