mysql 计数,然后按该计数分组

标签 mysql sql sql-server group-by aggregation

我有一个如下结构的表格:

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

我想做的是首先计算每个用户有多少个已保存的 id,然后对这些结果进行分组,以便我知道每个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

我不知道如何对我已有的总保存进行分组。我尝试了 GROUP BY Total_saves 但这不起作用。

最佳答案

使用两个聚合:

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;

关于mysql 计数,然后按该计数分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38526661/

相关文章:

mysql - 获取子查询 where 子句 id 与主查询中的 id 匹配

mysql - 如何使用 Komodo MySQL 插件删除表?

php - 页数不会为计数字段添加 +1

mysql - 具有 2 个连接和 GROUPBY 的查询中的 WHERE 子句?

mysql - 在 mysql 中使用 CAST 进行不正确的排序

mysql - 是否有可能找到包含字符串的行?假设我不知道哪些列包含字符串

c# - Dreamweaver CS6-windows 8.1-应用程序无法正确启动(0xc00007b)

sql - 如何在 SQL Profiler 或任何其他工具中监视事务隔离级别更改

sql - 在 SQL Server 中使用纯 SQL 在数据库之间复制 BLOB 值

sql - 用中文值查询