我有一张类似的桌子
uid programid
1 3
1 4
2 5
2 6
3 3
...
有可能使用mysql吗?百分比并不重要,但是我非常希望获得“集群”部分。
感谢您的帮助:)
答案 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