Sobes.tech
Junior

SQLде WHERE жана HAVING курулуштарынын айырмасы эмнеде?

sobes.tech AI

AIден жооп

WHERE, саптар группалоодон (GROUP BY) мурда фильтрлейт, кайсы саптар агрегаттык функцияларга катыша турганын таасир этет. HAVING, группалоодон кейин, агрегаттык функциялардын жыйынтыктары боюнча группаларды фильтрлейт.

Өзгөчөлүк WHERE HAVING
Колдонуу Жалгыз саптарга Саптардын топторуна
Өңдөө убактысы GROUP BYдан мурда GROUP BYдан кейин
Колдонуу Таблицадагы талаалар менен, бирок жок агрегаттык функциялар менен Агрегаттык функциялардын жыйынтыктары менен же GROUP BY талаалары менен

WHERE колдонуу мисалы:

SELECT продукт_аты, баа
FROM продуктылар
WHERE category_id = 1; -- Саптарды **группалоодон** **мурда** фильтрлейт (эгер керек болсо)

HAVING колдонуу мисалы:

SELECT category_id, COUNT(*) AS жалпы_продуктылар
FROM продуктылар
GROUP BY category_id
HAVING COUNT(*) > 5; -- Жалпы продуктулардын санын эсептегенден **кейин** группаларды фильтрлейт

Коомдош колдонуу мисалы:

SELECT category_id, AVG(баа) AS орточо_баа
FROM продуктылар
WHERE склад > 0 -- Жана гана складтагы продуктуларды **группалоодон** **мурда** фильтрлейт
GROUP BY category_id
HAVING AVG(баа) < 100; -- Орточо баасы 100дөн төмөн болгон группаларды **кейин** фильтрлейт