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 է