0

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

我可以使用如下查询来确定每张发票的唯一项目的平均数量:

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

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

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

4

2 回答 2

1

您可以汇总您已经弄清楚如何获得的结果。

WITH DistinctCounts AS (
  SELECT invoiceNumber, COUNT(DISTINCT itemNumber) AS distinctItems
  FROM transactions 
  GROUP BY invoiceNumber
)
  SELECT AVG(distinctItems)
  FROM DistinctCounts
于 2013-10-09T20:22:45.580 回答
0
Select avg(numberininvoice)
From
(
Select invoicenumber, count(itemnumber) as numberininvoie
From
(Select distinct invoicenumber, itemnumber
From transactions) a
Group by invoicenumber
) b
于 2013-10-09T20:19:54.300 回答