首页 > 解决方案 > SQL获取多个平均值的总和

问题描述

我有一张包含歌曲、用户和用户对歌曲评分的表格。

收视率。*

用户身份 歌曲ID 评分
95 1 8
12 1 6
95 1 8
13 1 6
81 2 3
42 2 1
51 3 6
22 3 6

我还有一张匹配歌曲 ID 和艺术家的表格。

歌曲。*

歌曲ID 艺术家
1 迈克尔杰克逊
2 女王

我需要的是获得每首歌的平均评分,然后求和以找到艺术家的总评分。

所以在这里,我试着用输入来展示,米歇尔杰克逊。

SELECT SUM( AVG(ratings.rating WHERE songID=1) + AVG(ratings.rating WHERE songID=3) )

想要的输出

输入,艺术家 输出,总额定值
“迈克尔杰克逊” 13
“女王” 2

每一个答案都非常感谢,谢谢。

标签: sqlsuminner-joinaverage

解决方案


您可以使用派生表(使用子查询作为表):

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

推荐阅读