SQL中基于多个表中的两列的计数函数和分组函数

SQL中基于多个表中的两列的计数函数和分组函数,sql,Sql,我有一个音乐商店数据库,其中有4个表 发票 跟踪 发票行 体裁 我想得到每个国家最流行的流派。结果必须显示国家名称、流派总购买量和流派名称。我在4个表之间创建了一个父子关系,以获取每个发票行的类型名称 我正在尝试的代码是 SELECT Invoice.BillingCountry, Genre.Name, Genre.GenreId FROM Invoice, InvoiceLine, Track, Genre WHERE Invoice.InvoiceId = InvoiceLine.Invo

我有一个音乐商店数据库,其中有4个表

  • 发票
  • 跟踪
  • 发票行
  • 体裁
  • 我想得到每个国家最流行的流派。结果必须显示国家名称、流派总购买量和流派名称。我在4个表之间创建了一个父子关系,以获取每个发票行的类型名称 我正在尝试的代码是

    SELECT Invoice.BillingCountry, Genre.Name, Genre.GenreId
    FROM Invoice, InvoiceLine, Track, Genre
    WHERE Invoice.InvoiceId = InvoiceLine.InvoiceId AND InvoiceLine.TrackId = Track.TrackId AND 
    Track.GenreId = Genre.GenreId
    ORDER by Invoice.BillingCountry
    
    我得到的结果

    现在,我想获得国家级、类型级的购买


    任何人都可以帮忙吗?

    您需要使用
    分组方式
    计数
    来实现这一点,如下所示:

    SELECT Invoice.BillingCountry, Genre.Name, count(*) as purchase_count
    FROM Invoice, InvoiceLine, Track, Genre 
    WHERE Invoice.InvoiceId = InvoiceLine.InvoiceId 
          AND InvoiceLine.TrackId = Track.TrackId 
          AND Track.GenreId = Genre.GenreId 
    GROUP BY Invoice.BillingCountry, Genre.Name
    ORDER BY Invoice.BillingCountry, Genre.Name
    

    非常感谢你的回答。现在的问题是,我只需要显示具有最大计数invoice.billingcount的条目。再次感谢您的帮助。您可以使用GROUP BY和MAX在所需列上查询查询结果,而不是使用count。另外,如果我以前的回答是你最初的问题,请将其标记为正确。是的,你以前的回答非常正确。但问题是我无法处理子查询。我是否应该以子查询和与主查询相同的查询的形式运行上一个已应答的查询,但这次不是使用max,而是使用count函数。