假设表包含以下颜色:
id integer,
name char(6),
status integer
并有以下数据:
id id2 type
--- ----- ----
01 Adam 1
02 Bob 1
03 Adam 2
04 Caymen 1
05 Ahmed 1
06 Basel 1
07 Ahmed 2
08 Bob 2
09 Ahmed 2
10 Mike 1
因此它基本上跟踪不同用户的状态进展.
我想对状态计数进行分组.换句话说,我想知道有多少用户只有1个状态,有多少有2个状态,有多少有3个状态等等.
预期的输出将是这样的:
num_of_statuses count
--------------- -----
1 3
2 2
3 1
我试过了,但还没找到解决方案.任何语法都可以. SQL / MySQL的/ DB2 / Oracle的.
解决方法:
如果您不想使用嵌套查询,可以像这样避免它:
SELECT DISTINCT
num_of_statuses = COUNT(*),
count = COUNT(*) OVER (PARTITION BY COUNT(*))
FROM atable
GROUP BY id