所以我做了一个SQL练习,要求我列出制作了6张以上专辑的艺术家的名字。
我已经成功地列出了6+专辑的艺术家的名字和每个艺术家出现在表中的第一张专辑,但是我不知道如何列出专辑的数量。
我正在处理两个表。“艺术家”和“专辑”。
- “艺术家”包含“艺术家ID”和“名称”
- “专辑”包含“艺术家ID”和“专辑”
这是我的sql代码,在下面的链接中可以找到当前输出与预期输出的比较。如果有人能给我指出正确的方向,我将非常感激。注意,我只应该使用COUNT
一次。
SELECT artists.name, albums.albumid
from albums join artists on albums.ArtistId = artists.ArtistId
GROUP BY artists.artistid
HAVING COUNT(albums.albumid) > 6
https://i.stack.imgur.com/EYmyZ.png
编辑:我已经发现这会给出正确的输出,但是我只应该使用COUNT函数一次,有没有其他选择?
SELECT artists.name, COUNT (albums.albumid) AS 'Total Albums Released'
from albums join artists on albums.ArtistId = artists.ArtistId
GROUP BY artists.artistid
HAVING COUNT(albums.albumid) >= 6
ORDER BY COUNT('Total Albums Released') DESC
2条答案
按热度按时间sxissh061#
聚集值的筛选应该在
HAVING
子句中完成,您可以在SELECT
列表中使用一次COUNT(*)
,在其他任何地方使用其别名:p4tfgftt2#
HAVING子句只作为一个过滤器,它本身并不返回一个列。这仍然在select语句中。
编辑:Where子句可让您将筛选套用至整个表格,而非仅套用至选取的群组,让您可以使用汇总函数