我们的任务是用WHERE替换GROUP BY和HAVING子句,如果可能的话。 SQL代码如下:
SELECT Sparte , Region , SUM( Umsatz )
FROM Fakten
GROUP BY Sparte , Region
HAVING SUM( Umsatz ) >= 50000
是否可以使用WHERE更改最后两行?如果没有,为什么? 谢谢你的期待。
答案 0 :(得分:2)
如果您确实需要使用WHERE
而不是HAVING
SELECT * FROM (
SELECT Sparte , Region , SUM(Umsatz) as S_Umsatz
FROM Fakten
GROUP BY Sparte , Region
) d
WHERE S_Umsatz >= 50000
答案 1 :(得分:1)
WHERE
将根据实际行进行过滤
HAVING
将在GROUP BY
踢出
两者都有不同的用例
编辑如果您想使用子查询,可以执行
SELECT Sparte, Region , SUM( Umsatz )
FROM Fakten
WHERE (SELECT SUM( Umsatz )
FROM Fakten as F2
WHERE F2.Sparte = Fakten.Sparte
AND F2.Region = Fakten.Region ) >= 50000
GROUP BY Sparte, Region
或Matteo方式(更高效和优雅)