来自相关表的mysql平均计数
作者:互联网
我有两个表:
用户表
用户列表
故事
故事列表-每个用户多个故事
我想知道用户拥有的平均故事数. (不是特定用户,对于所有用户)
预期结果:每位用户平均有2.3个故事
尝试过:
从(按user_id的故事分组选择w中选择count(distingt user_id)作为w)avg(w)
以上跑了,但似乎不正确
也:
SELECT user_id,(从用户w.user_id = u.user_id的故事中选择COUNT(*)个)作为来自用户u的TotalStories;
返回每个用户的平均故事,而不是整体的平均故事
解决方法:
首先,您需要知道每个用户的故事数:
select count(s.id) as n
from users u left outer join stories s on u.id = s.user_id
group by u.id
然后将avg应用于该值:
select avg(n)
from (
select count(s.id) as n
from users u left outer join stories s on u.id = s.user_id
group by u.id
) as dt
标签:aggregate-functions,sql,mysql 来源: https://codeday.me/bug/20191102/1988886.html