Junior
Jaký je rozdíl mezi příkazy WHERE a HAVING v SQL?
sobes.tech AI
Odpověď od AI
WHERE se aplikuje před seskupením a filtruje řádky výsledku FROM. HAVING se aplikuje po seskupení a filtruje skupiny vytvořené pomocí GROUP BY.
Příklad:
Předpokládejme, že máme tabulku orders se sloupci customer_id, order_date a amount.
Najděte všechny zákazníky, jejichž celková částka objednávek přesahuje 1000:
SELECT customer_id, SUM(amount)
FROM orders
GROUP BY customer_id
HAVING SUM(amount) > 1000;
Najděte všechny objednávky s částkou vyšší než 1000:
SELECT customer_id, order_date, amount
FROM orders
WHERE amount > 1000;
Porovnávací tabulka:
| Vlastnost | WHERE | HAVING |
|---|---|---|
| Použití | Na jednotlivé řádky před seskupením | Na seskupené řádky po seskupení |
| Používá | Sloupce z FROM |
Agregační funkce a sloupce z GROUP BY |
| Provádí se | Před GROUP BY |
Po GROUP BY |
| Agregační funkce | Nemůže být použita přímo | Může být použita |