SQL Server查询以进一步汇总分组数据

时间:2013-10-09 19:51:27

标签: sql sql-server

假设一个名为 transactions 的表有两列: invoiceNumber itemNumber 。单个发票上的多个项目数量会反映在表格中的多个记录中。 (我知道这不是一个合适的设计,但我正在简化一个更复杂的结构来解决根本问题。)

我可以通过以下查询确定每张发票的平均唯一商品数量:

SELECT invoiceNumber, COUNT(DISTINCT itemNumber) 
FROM transactions 
GROUP BY invoiceNumber

此查询有效地忽略了某个项目的数量,每个发票只计算一次,并显示每张发票的结果。

不是所有这些详细信息,我真正想要的是确定所有发票中平均的唯一商品数量。也就是说,我只想总结一下每张发票的信息。我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以汇总您已经知道如何获得的结果。

WITH DistinctCounts AS (
  SELECT invoiceNumber, COUNT(DISTINCT itemNumber) AS distinctItems
  FROM transactions 
  GROUP BY invoiceNumber
)
  SELECT AVG(distinctItems)
  FROM DistinctCounts

答案 1 :(得分:0)

Select avg(numberininvoice)
From
(
Select invoicenumber, count(itemnumber) as numberininvoie
From
(Select distinct invoicenumber, itemnumber
From transactions) a
Group by invoicenumber
) b