我正在尝试查询所有产品(PRODUCTO_NO)中UNIDADES的平均数量是否大于UNIDADES的平均数量。为此,我正在尝试:
SELECT *
FROM productos
WHERE PRODUCTO_NO IN (SELECT PRODUCTO_NO
FROM pedidos p1
GROUP BY PRODUCTO_NO
HAVING AVG(p1.UNIDADES)>=ALL(SELECT AVG(UNIDADES)
FROM pedidos
GROUP BY PRODUCTO_NO)
);
问题是,尽管这可能可行,但我必须使用“> =”,因为如果我使用“>”,结果将是一个空集(因为我将每个产品与其自身进行比较)。这就是为什么我尝试进行相关子查询的原因:
SELECT *
FROM productos
WHERE PRODUCTO_NO IN (SELECT PRODUCTO_NO
FROM pedidos p2
HAVING AVG(p2.UNIDADES)>ALL(SELECT AVG(p1.UNIDADES)
FROM pedidos p1
WHERE p2.PRODUCTO_NO=p1.PRODUCTO_NO AND p2.UNIDADES<>p1.UNIDADES
)
);
但这似乎也不起作用(它返回一个空集)。我什至尝试使用GROUP BY:
SELECT *
FROM productos
WHERE PRODUCTO_NO IN (SELECT PRODUCTO_NO
FROM pedidos p2
GROUP BY PRODUCTO_NO
HAVING AVG(p2.UNIDADES)> ALL(SELECT AVG(p1.UNIDADES)
FROM pedidos p1
WHERE p2.UNIDADES<>p1.UNIDADES
GROUP BY p1.PRODUCTO_NO
)
);
但是在这里我得到了错误1054(42S22):“ where子句”中的未知列