You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL分组统计需求:按发票数统计对应客户数量的查询语法

SQL统计发票数量对应的客户总数

原始数据表结构及数据

incomedateproductidinvoiceidcustomerid
3002015-01-01A12345511
3002016-01-02A12345521
3002016-01-03B12345532
3002016-01-03A12345532
3002016-01-04C12345543
3002016-01-04C12345543
3002016-01-08A12345563
3002016-01-08B12345563
3002016-01-11C12345573

统计需求

统计每个客户的发票数量,以及对应发票数量的客户总数(例如:1张发票对应若干客户,2张发票对应若干客户,以此类推)。

根据示例数据:

  • 客户1有2张发票
  • 客户2有1张发票
  • 客户3有3张发票

预期结果如下:

预期结果表

invoice_countcustomers_with_this_invoice_count
11
21
31

尝试过的SQL(未得到目标结果)

select * from
(
  select CustomerID,count(distinct InvoiceID) as 'Total Invoices'
  from exam
  GROUP BY CustomerID
) a

正确的SQL查询语句

在你现有子查询的基础上,需要再对发票数量进行分组统计,具体语句如下:

SELECT
  invoice_count,
  COUNT(customerid) AS customers_with_this_invoice_count
FROM (
  SELECT
    customerid,
    COUNT(DISTINCT invoiceid) AS invoice_count
  FROM exam
  GROUP BY customerid
) AS customer_invoice_counts
GROUP BY invoice_count
ORDER BY invoice_count;

语句说明

  1. 内层子查询:按customerid分组,用COUNT(DISTINCT invoiceid)统计每个客户的唯一发票数量,避免同一张发票的多条记录重复计数,得到每个客户对应的发票数。
  2. 外层查询:对内层结果按invoice_count分组,统计每个发票数对应的客户总数,最后按发票数排序保证结果有序。

内容的提问来源于stack exchange,提问作者Yuval

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 19:15:57