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
我们的任务是尽可能用 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