mysql - 给定两个表,如何找到关联表中的平均行数?

标签 mysql sql

我有以下两个表:

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

我的目标是确定每个用户的平均爱好数。

构建此 SQL 查询的正确方法是什么?我应该使用 LEFT JOIN 吗?感谢指向正确方向的指针。谢谢

最佳答案

您可以使用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

关于mysql - 给定两个表,如何找到关联表中的平均行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57084557/

相关文章:

PHP 排名和更新所有数据库行

ubuntu - 从不同的安装访问 mysql 数据库

mysql - 如何在LabVIEW中查询MySQL ODBC版本

php - 如何在 codeigniter 中使用开始时间和结束时间检查行程开始日期和结束日期

mysql - 有人会如何为 SQL 创建 ID?

c# - Entity Framework 查询思路(group by)

mysql - SQL - 计算两行之间的差异并放入另一列

sql - 如何在 MSSQL 2008 字符串连接中替换表变量

sql - 是否可以在不定义模式的情况下插入表变量?

Javascript:将日期转换为 UTC 格式