Junior
SQLде WHERE жана HAVING буйруктарынын айырмасы эмнеде?
sobes.tech AI
AIден жооп
WHERE саптар мурда топтоо жасабастан фильтрлейт. HAVING топтоо менен түзүлгөн топторду, андан кийин фильтрлейт.
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ден ашкандар гана калат