Sobes.tech
Junior — Middle

Каква е разликата между условието WHERE и HAVING при работа със SQL заявки?

sobes.tech AI

Отговор от AI

WHERE и HAVING са условия за филтриране в SQL, но те се прилагат на различни етапи от обработката на данните.

  • WHERE филтрира редовете преди групирането. Използва се за избор на записи на ниво оригинални данни.
  • HAVING филтрира групите, формирани от оператора GROUP BY. Прилага се след агрегирането.

Пример:

SELECT отдел, COUNT(*) като брой_служители
FROM служители
WHERE заплата > 50000  -- филтрираме служители с заплата > 50000
GROUP BY отдел
HAVING COUNT(*) > 10      -- избираме отдели с повече от 10 служители

Тук първо се избират служителите с заплата над 50000 (WHERE), след това данните се групират по отдели, и накрая се избират само онези отдели, където броят на служителите е по-голям от 10 (HAVING).