2015-06-08 95 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