SQL子查询需求:统计各客户发票数及对应客户总数
解决方案
你只需要在现有子查询基础上再做一次分组统计,就能得到目标格式的结果,具体SQL语句如下:
SELECT COUNT(CustomerID) AS Customers, `Total Invoices` AS Invoices FROM ( SELECT CustomerID, COUNT(DISTINCT InvoiceID) AS `Total Invoices` FROM exam GROUP BY CustomerID ) a GROUP BY `Total Invoices` ORDER BY Invoices DESC;
逻辑说明:
- 内层子查询:按
CustomerID分组,统计每个客户的唯一发票数量,得到每个客户对应的发票数。 - 外层查询:以子查询的结果为数据源,按
Total Invoices(发票数)分组,用COUNT(CustomerID)统计该发票数对应的客户总数,最终输出Customers(客户总数)和Invoices(对应发票数)两列。 - 末尾的
ORDER BY Invoices DESC可以让结果按发票数从多到少排序,更直观查看数据分布。
内容的提问来源于stack exchange,提问作者Yuval
相关产品推荐
相关产品推荐

