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 է