如何用特殊情况分组两个cols

时间:2016-06-04 13:59:55

标签: sql

输入数据是: 数据格式为: (类,类型,名称), 数据是:

(1, a, p1)
(1, b, p2)
(1, c, p3)
(2, a, p4)

根据我需要制作的上述数据。

我想按(类和类型)对数据进行分组。 但是type = a和type = b应该在一个组中计数。 所以,

p1 and p2 is one group, 
p3 is one group, 
p4 is ome group.

输出应为: 数据格式为: (分类,计数)。 数据是:

(1, 2)
(1, 1)
(2, 1)

有人可以帮我在SQL中执行此操作吗? 非常感谢。

2 个答案:

答案 0 :(得分:1)

您需要的是select class, count(*) from table_name group by class, case when type_col in ('a','b') then 'a' else type_col end;

Counter

答案 1 :(得分:0)

您可以使用case来组合这些组:

select class, (case when type in ('a', 'b') then 'combined' else type end) as grp,
       count(*)
from t
group by class, (case when name in ('a', 'b') then 'combined' else type end) 

您不需要将grp列放在select中。我认为这些信息的输出更清晰。