2015-06-08 50 views
0

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

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

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

+0

你不能在'用'GROUP BY'功能WHERE'条款,所以没有,除非你的内部查询。 –

+1

为什么你需要这样做?想要这个的动机是什么? –

+0

我需要这样做是因为任务:D个人而言,我不需要这个,但是,这是一项任务。 – Blnpwr

回答

2

如果你真的需要使用WHERE代替HAVING

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

这就是我所寻找的。非常感谢你! – Blnpwr

1

WHERE将筛选根据实际行GROUP BY踢后
HAVING将过滤在

两者有不同的使用情况

编辑如果你想使用子查询,你可以做

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

+0

谢谢,我知道这一点,但我被告知使用内部查询时可以用WHERE替换GROUP BY和HAVING。查询的外观如何? – Blnpwr

+0

非常感谢,每一个版本都是值得欢迎的。 – Blnpwr