SQL- 哪里有

SQL- WHERE and HAVING

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

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

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

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

如果你真的需要使用WHERE而不是HAVING

SELECT * FROM (
  SELECT Sparte , Region , SUM(Umsatz) as S_Umsatz
  FROM Fakten
  GROUP BY Sparte , Region
) d
WHERE S_Umsatz >= 50000