【问题标题】:SQL : query to retrieve dataSQL:查询以检索数据
【发布时间】:2020-04-10 11:32:20
【问题描述】:

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

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

德雷克(售出 300 首曲目)

肯德里克(233 首曲目)

Cardi B(200 首曲目)

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

感谢您的宝贵时间

【问题讨论】:

    标签: sql count max


    【解决方案1】:

    下面将相关表连接在一起,并使用聚合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
    

    【讨论】:

      【解决方案2】:

      如果您正在寻找销量最高的 3 首曲目,那么这将为您提供前 3 名的 trackid。然后将其加入到您的曲目、专辑和艺术家表中以获取艺术家。

      SELECT TOP 3 trackid 
      FROM InvoiceLine
      GROUP BY trackid
      ORDER BY COUNT(trackid) DESC
      

      【讨论】:

      • "我想检索销量前 3 名的演员姓名。"