现在已经对此困扰了一段时间,但似乎离它越来越近了。
为InvoiceNbr
大于平均InvoiceDt
的所有发票设计TotalPrice
,TotalPrice
和TotalPrice
。按InvoiceNbr
降序排序。
这是我想出的:
SELECT I.InvoiceNbr AS Invoice#,
I.InvoiceDt AS Date,
I.TotalPrice AS Amount
FROM INVOICE AS I
WHERE I.TotalPrice IN
(SELECT AVG(I.TotalPrice)
FROM INVOICE
GROUP BY I.InvoiceDt, I.InvoiceNbr, TotalPrice
HAVING I.TotalPrice > AVG(I.TotalPrice));
GO
不断收到错误:
每个GROUP BY表达式必须包含至少一个不是外部引用的列。
最佳答案
您不符合逻辑。您想使用join
中的from
或子查询返回平均值。您已经从子查询开始,所以让我们往下走:
SELECT I.InvoiceNbr AS Invoice#,
I.InvoiceDt AS Date,
I.TotalPrice AS Amount
FROM INVOICE I
WHERE I.TotalPrice > (SELECT AVG(I2.TotalPrice)
FROM INVOICE I2
);
关于mysql - 每个GROUP BY表达式必须包含不是外部引用的列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49174145/