现在已经对此困扰了一段时间,但似乎离它越来越近了。

InvoiceNbr大于平均InvoiceDt的所有发票设计TotalPriceTotalPriceTotalPrice。按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/

10-11 00:57