SQL GROUP BY va HAVING orqali guruhlash

SQL tilida qatorlarni biror shart (masalan, bir xil qiymat) bo'yicha guruhlash uchun GROUP BY kalit so'zidan foydalaniladi. GROUP BY odatda aggregat funksiyalar (COUNT(), MAX(), MIN(), SUM(), AVG()) bilan ishlatiladi. Sintaksisi quyidagicha:

SELECT ustun_nom(lar)i FROM jadval_nomi WHERE shartli_ifoda
GROUP BY ustun_nom(lar)i ORDER BY ustun_nom(lar)i;

Quyidagi Xaridorlar jadvalaridan har bir websayt bo'yicha nechta xaridor borligini hisoblaydigan so'rovni GROUP BY va COUNT kalit so'zlari yordamida yozamiz va natijani ko'ramiz:

SELECT Websayt, COUNT(Websayt) AS Soni FROM Xaridorlar
GROUP BY Websayt ORDER BY Soni DESC;

GROUP BY kalit so'zi ishlatilgan so'rovlarda aggregat funksiyalarga WHERE kalit so'zi bilan shart berib bo'lmaydi. Shuning uchun SQL yangi HAVING nomli kalit so'zni kiritgan. HAVING kalit so'zi quyidagicha sintaksisda qo'llaniladi:

SELECT ustun_nom(lar)i FROM jadval_nomi WHERE shartli_ifoda
GROUP BY ustun_nom(lar)i HAVING shartli_ifoda ORDER BY ustun_nom(lar)i;

Keling, kattaroq jadval ustida ko'proq va murakkabroq so'rovlar yozamiz.

Foydalanuvchilar jadvali:

Endi foydalanuvchilarni shahar bo'yicha guruhlab, 3 va undan ortiq foydalanuvchiga ega shaharlarni chop etamiz:

SELECT Shahar, COUNT(Shahar) AS Soni FROM Foydalanuvchilar GROUP BY Shahar HAVING Soni > 2;