2016-07-22 60 views
3

我有一个表的结构是这样的:MySQL的计数,然后由该组数

user_id saved_id 
1   2 
1   34 
1   36 
2   489 
2   14 
3   731 
4   48 
5   901 
6   234 
6   9 
6   64 

我想要做的是先算多少保存IDS每个用户都有,然后组这些结果使我知道每个total_saves发生的频率。

这是我目前有:

SELECT user_id, count(*) as total_saves FROM table GROUP BY user_id ORDER BY total_saves DESC 

这给了我

user_id total_saves 
1   3 
6   3 
2   2 
3   1 
4   1 
5   1 

我想有是这样的:

total_saves count 
3    2 
2    1 
1    3 

不能让我的头围绕着如何组合我已经拥有的total_saves。我试过GROUP BY total_saves但这不起作用。

回答

4

使用两个聚合:

select total_saves, count(*) as cnt 
from (select user_id, count(*) as total_saves 
     from t 
     group by user_id 
    ) t 
group by total_saves; 
0

使用子查询

select total_saves, count(total_saves) as count 
from (select user_id, count(*) as total_saves 
    from table 
    group by user_id 
) a 
group by total_saves order by total_saves;