使用分组依据进行细分和计数

时间:2019-06-20 15:03:14

标签: mysql

我有一张类似的桌子

uid programid
1   3
1   4
2   5
2   6
3   3
...

但是想像一下,在一百万行中,我想要得到的是 enter image description here

有可能使用mysql吗?百分比并不重要,但是我非常希望获得“集群”部分。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

您可以使用表表达式预先计算数据,如下所示。如果使用MySQL 8.x,则可以使用CTE(使用起来更友好)。例如:

select
  favorites,
  users,
  case when users = 0 then 0 else mod(users - 1, 5) end as cluster
from (
   select
    favorites,
    count(*) as users
  from (
    select uid, count(*) as favorites
    from t
    group by uid
  ) x
  group by favorites
) y
order by favorites