首页 > 解决方案 > SQL:查询以检索数据

问题描述

我正在处理一个 SQL 项目,其中我有表 Actor AlbumId TrackId InvoiceLine 和 Invoice ,我想检索其曲目是销量前 3 名的演员的姓名。

ex(来自 10 位艺术家的表格)。

德雷克(售出 300 首曲目)

肯德里克(233 首曲目)

Cardi B(200 首曲目)

我是 SQL 新手,下面有我的图表。我知道我必须连接演员专辑曲目和发票的表格才能从 invoiceline 表格中获取 3 max(count(trackid)) 给我制作特定曲目的演员的姓名

感谢您的时间 在此处输入图像描述

标签: sqlcountmax

解决方案


下面将相关表连接在一起,并使用聚合COUNT函数来计算与歌曲关联的发票行数。

您可能希望使用 TOP 3 WITH TIES,以防有两位艺术家排名第三且销售额相同

SELECT  TOP 3
        ar.Name
FROM    InvoiceLine il
        JOIN Track t
            ON il.TrackId = t.TrackId 
        JOIN Album al
            ON al.AlbumId = t.AlbumId
        JOIN Artist ar
            ON ar.ArtistId = al.ArtistId
GROUP BY ar.Name
ORDER BY COUNT(t.TrackId) DESC

推荐阅读