logo

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.