我試圖按專案型別獲取用戶的平均評分,但包括所有具有評分的用戶,而不管型別如何。
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
專案表是:(只有前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
uj5u.com熱心網友回復:
使用條件聚合:
SELECT p.user_id,
COALESCE(AVG(CASE WHEN p.type = '0' THEN r.rating END), 0) AS avg1
FROM projects p JOIN ratings r
ON p.project_id = r.project_id
GROUP BY p.user_id;
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/396739.html
