在SQL中计算和替换条件

时间:2017-11-15 07:32:53

标签: sql sql-server

我的要求如下: - 所有录音艺术家的名字 - 每个艺术家唱的摇滚歌曲数量 -list已订购,以便首先出现摇滚歌曲数量最少的艺术家

*请注意,有些艺术家可能不会唱任何摇滚歌曲,但仍应包含在列表中。

这应该在获得这些结果的单个查询中完成。

确保从结果集中删除不需要的列,并将列命名为用户友好且易读的。

这是我到目前为止所做的:

{{1}}

其中显示了2位拥有摇滚歌曲的艺术家名字,显示摇滚类型的专栏以及每位艺术家演唱的摇滚歌曲的数量。

我无法弄清楚如何将那些没有摇滚歌曲的人展示为拥有0首摇滚歌曲。

如果我删除了WHERE命令,它会在每种歌曲类型中显示所有歌曲及其数量,但仍无法设置除摇滚到0之外的任何内容。这就是我需要帮助理解的内容。

编辑:我使用的是Microsoft SQL Server。

编辑:这是我需要的红色编辑输出。我需要歌曲的总数来表示摇滚歌曲的数量,如果歌手没有唱摇滚歌曲,我仍然需要列出它们,并且它们的歌曲价值为0或NULL。

output table

1 个答案:

答案 0 :(得分:0)

你可以试试这个。

SELECT recording_artist.artist_name AS "Artist Name", Musical_genre.musical_genre AS "Genre",
        COUNT(Song.song_id) AS "Number of Songs"                         
FROM Album
JOIN recording_artist
    ON recording_artist.recording_artist_id = album.recording_artist_id
LEFT JOIN musical_genre
    ON musical_genre.musical_genre_id = album.musical_genre_id
       AND Musical_genre.musical_genre = 'Rock
LEFT JOIN Song 
    ON Album.album_id = Song.album_id                                   
GROUP BY recording_artist.artist_name, Musical_genre.musical_genre      
ORDER BY "Number of Songs" ASC