SQL 获取多个平均值的总和
SQL get sum of multiple averages
我有一个 table,其中包含歌曲、用户和用户对歌曲的评分。
评分。*
userID
songID
rating
95
1
8
12
1
6
95
1
8
13
1
6
81
2
3
42
2
1
51
3
6
22
3
6
我还有一个 table 匹配歌曲 ID 和艺术家。
首歌曲。*
songID
artist
1
Michal Jackson
2
Queen
我需要的是得到每首歌的平均评分,然后求和求出艺术家的总评分。
所以在这里,我将尝试用 Michel Jackson 的输入来展示。
SELECT SUM( AVG(ratings.rating WHERE songID=1) + AVG(ratings.rating WHERE songID=3) )
想要输出
Input, artist
Output, total rating
"Michal Jackson"
13
"Queen"
2
非常感谢每一个答案,谢谢。
您可以使用 派生的 table(使用子查询作为 table):
SELECT
songID
, SUM(average_rating) AS total_rating
FROM (
SELECT
songID
, artist
, AVG(rating) AS average_rating
FROM songs
GROUP BY songID
) AS song_ratings
GROUP BY artist
我有一个 table,其中包含歌曲、用户和用户对歌曲的评分。
评分。*
userID | songID | rating |
---|---|---|
95 | 1 | 8 |
12 | 1 | 6 |
95 | 1 | 8 |
13 | 1 | 6 |
81 | 2 | 3 |
42 | 2 | 1 |
51 | 3 | 6 |
22 | 3 | 6 |
我还有一个 table 匹配歌曲 ID 和艺术家。
首歌曲。*
songID | artist |
---|---|
1 | Michal Jackson |
2 | Queen |
我需要的是得到每首歌的平均评分,然后求和求出艺术家的总评分。
所以在这里,我将尝试用 Michel Jackson 的输入来展示。
SELECT SUM( AVG(ratings.rating WHERE songID=1) + AVG(ratings.rating WHERE songID=3) )
想要输出
Input, artist | Output, total rating |
---|---|
"Michal Jackson" | 13 |
"Queen" | 2 |
非常感谢每一个答案,谢谢。
您可以使用 派生的 table(使用子查询作为 table):
SELECT
songID
, SUM(average_rating) AS total_rating
FROM (
SELECT
songID
, artist
, AVG(rating) AS average_rating
FROM songs
GROUP BY songID
) AS song_ratings
GROUP BY artist