Sobes.tech
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