【发布时间】:2021-12-27 22:46:25
【问题描述】:
我正在尝试按项目类型获取用户的平均评分,但包括所有具有评分的用户,无论类型如何。
SELECT projects.user_id, AVG(ratings.rating) AS avg1
FROM projects
JOIN ratings
ON projects.project_id = ratings.project_id
WHERE projects.type='0'
GROUP BY projects.user_id;
提前感谢您的帮助。
类型 0 的输出是:
user_id | avg1
-----------------
11 | 2.25
但我想得到:
user_id | avg1
-----------------
11 | 2.25
12 | 0
因为用户 12 在评级表中有一个项目但不是类型 0 我仍然希望它输出 avg1 = 0
类型 1 的输出按预期工作,因为所有具有评分的用户也具有类型 1:
user_id | avg1
-----------------
11 | 4
12 | 2.5
Projects 表是:(评分表中只有前 4 个项目)
project_id |user_id | type
--------------------------
51 11 0
52 12 1
53 11 0
54 11 1
55 12 1
56 13 0
57 14 1
评分表是:
project_id | rating
-------------------
51 0
51 1
52 4
51 5
52 2
53 3
54 4
52 1.5
【问题讨论】:
标签: mysql inner-join average rating conditional-aggregation