SQL-WHERE和HAVING

时间:2015-06-08 16:39:31

标签: sql where having

我们的任务是用WHERE替换GROUP BY和HAVING子句,如果可能的话。 SQL代码如下:

SELECT Sparte , Region , SUM( Umsatz )
FROM Fakten
GROUP BY Sparte , Region
HAVING SUM( Umsatz ) >= 50000

是否可以使用WHERE更改最后两行?如果没有,为什么? 谢谢你的期待。

2 个答案:

答案 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方式(更高效和优雅)