Klauzule Having vs Where v SQL

Rozdíl mezi klauzulí have a where v SQL je ten, že klauzule where cann ot lze použít s agregáty, ale klauzule mít může.

The kde klauzule funguje na řádkových datech, nikoli na agregovaných datech. Podívejme se níže na tabulku „Značky“.

Skóre studentského kurzu

a c1 40

a c2 50

b c3 60

d c1 70

e c2 80

Zvažte dotaz

SELECT> Student, Score FROM Marks WHERE Score>=40>>

To by vybralo data řádek po řádku.

The mít doložka funguje na agregovaných datech.

Například výstup níže uvedeného dotazu

SELECT> Student,> SUM> (score) AS> > total> FROM> Marks> GROUP BY> Student>

Student celkem

90

b 60

d 70

a 80

Když použijeme výše uvedený dotaz, dostaneme

SELECT> Student,> SUM> (score) AS> > total> FROM> Marks> GROUP BY> Student>

HAVING> total>70>

Student celkem

90

a 80

Poznámka: Nejde o předdefinované pravidlo, ale v mnoha SQL dotazech používáme WHERE před GROUP BY a HAVING po GROUP BY. Klauzule Where funguje jako a předfiltr kde jako Mít jako a post filtr.