mysql – 根据列的计数进行分组的SQL

假设表包含以下颜色:

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
上一篇:mysql – 什么是聚簇索引表?


下一篇:java – 如何在插入XML列时解决“非法转换”异常?