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