Sobes.tech
Junior

Фарқи байни фармонҳои WHERE ва HAVING дар SQL чист?

sobes.tech AI

Ҷавоб аз AI

WHERE сатрҳоро пеш аз гурӯҳбандӣ филтр мекунад. HAVING гурӯҳҳоро, ки бо GROUP BY сохта шудаанд, пас аз гурӯҳбандӣ филтр мекунад.

WHERE:

  • Ба сатрҳои инфиродӣ татбиқ мешавад.
  • Наметавонад функсияҳои ҷамъоварӣ (COUNT, SUM, AVG, MIN, MAX) истифода барад.
  • Пеш аз GROUP BY, HAVING ва SELECT иҷро мешавад.

HAVING:

  • Ба гурӯҳҳои сатрҳо татбиқ мешавад.
  • Метавонад функсияҳои ҷамъоварӣ истифода барад.
  • Пас аз WHERE ва GROUP BY, аммо пеш аз SELECT иҷро мешавад.

Масал:

Мо муштариёни шаҳри 'Маскав' (ки WHERE) ёфтем, ки ҷамъии умумии фармоишҳо аз 1000 зиёд аст (ки HAVING).

SELECT customer_id, SUM(order_amount)  -- ID муштарӣ ва ҷамъии фармоишҳояшро интихоб мекунад
FROM orders  -- Аз ҷадвали фармоишҳо
WHERE city = 'Маскав'  -- Сатрҳоро пеш аз гурӯҳбандӣ филтр мекунад, танҳо фармоишҳо аз Маскав мемонад
GROUP BY customer_id  -- Сатрҳоро ба ID муштарӣ гурӯҳбандӣ мекунад
HAVING SUM(order_amount) > 1000;  -- Гурӯҳҳоро филтр мекунад, танҳо онҳое бо ҷамъии фармоишҳо > 1000 мемонанд