作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有很多看起来像这样的表:(id,user_id,object_id)。我经常对“有多少用户拥有一个对象?有多少用户拥有两个对象?等等”这个问题感兴趣。并希望看到分布。
显而易见的答案如下:
select x.ucount, count(*)
from (select count(*) as ucount from objects_users group by user_id) as x
group by x.ucount
order by x.ucount;
ucount | count
-------|-------
1 | 15
2 | 17
3 | 23
4 | 104
5 | 76
7 | 12
select
x.ucount,
(select cdate from users where id = x.user_id) as cdate,
count(*)
from (
select user_id, count(*) as ucount
from objects_users group by user_id
) as x
group by cdate, x.ucount,
order by cdate, x.ucount;
最佳答案
我认为子查询正是执行此操作的合适方法,无论您的 RDBMS 是什么。为什么会不优雅?
对于第二个查询,只需加入 users
像这样的表:
SELECT
x.ucount,
u.cdate,
COUNT(*)
FROM (
SELECT
user_id,
COUNT(*) AS ucount
FROM objects_users
GROUP BY user_id
) AS x
LEFT JOIN users AS u
ON x.user_id = u.id
GROUP BY u.cdate, x.ucount
ORDER BY u.cdate, x.ucount
关于sql - 如何在不使用子查询的情况下从连接表中获取计数的直方图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5373788/
我是一名优秀的程序员,十分优秀!