Junior
SQL-ში WHERE და HAVING ბრძანებების განსხვავება რა არის?
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