给定两个表,如何在关联表中查找平均行数?

时间:2019-07-17 22:01:00

标签: mysql sql

我有以下两个表:

users [id, email, name]
hobbies [id, name]
hobbies_users [hobby_id, user_id]

我的目标是确定每个用户的AVG爱好数量。

构造此SQL查询的正确方法是什么?我应该使用左联接吗?沿正确方向欣赏指针。谢谢

1 个答案:

答案 0 :(得分:3)

您可以使用count()和除法。如果您想要有兴趣的用户的平均值:

select count(*) * 1.0 / count(distinct user_id)
from hobbies_users;

如果您想对所有用户进行平均,则有多种方法,但我想我会这样做:

select num_hobbies * 1.0 / num_users
from (select count(*) as num_hobbies from hobbies_users) hu cross join
     (select count(*) as num_users from users) u