HAVING mohiyati, WHERE va HAVING farqi, bajarilish tartibi, birga qo'llash
9-sinfBusiness Intelligence6-hafta · 18-darsGuruhlarni filtrlash
Farqi va tartib
Hisobot va xatolar
GROUP BY Shahar (3 ta shahar) nechta qator qaytaradi?
Guruhlarni filtrlash
SELECT Shahar, SUM(Summa) AS Jami
FROM Sotuvlar
GROUP BY Shahar
HAVING SUM(Summa) > 4000000;
-- Samarqand | 9640000
-- Toshkent | 5380000
SELECT Shahar, COUNT(*) AS SotuvSoni
FROM Sotuvlar
GROUP BY Shahar
HAVING COUNT(*) >= 4;
-- Toshkent | 4
HAVING da SELECT dagi alias ishlamaydi (T-SQL'da): HAVING Jami > 4000000 xato, funksiyani qayta yozing.Aggregatsiya bo'yicha guruhlarni qaysi operator filtrlaydi?
HAVING guruhlangan natijani filtrlaydi.Farqi va tartib
SELECT Shahar, SUM(Summa) AS Jami
FROM Sotuvlar
WHERE Kategoriya <> N'Ekran'
GROUP BY Shahar
HAVING SUM(Summa) > 3500000
ORDER BY SUM(Summa) DESC;
-- Samarqand | 7740000
-- Qator sharti WHERE ga:
SELECT Shahar, SUM(Summa) AS Jami
FROM Sotuvlar
WHERE Shahar = N'Toshkent'
GROUP BY Shahar;
SUM(Summa) > 4000000 sharti qayerda yoziladi?
Hisobot va xatolar
SELECT Shahar, Kategoriya, COUNT(*) AS Soni
FROM Sotuvlar
GROUP BY Shahar, Kategoriya
HAVING COUNT(*) > 1;
-- Buxoro | Aksessuar | 2
-- Toshkent| Aksessuar | 2
SELECT Kategoriya, AVG(Summa) AS Ortacha
FROM Sotuvlar
GROUP BY Kategoriya
HAVING AVG(Summa) > 2000000;
-- Kompyuter | 4633333.33
HAVING COUNT(*) > 1 qaysi guruhlarni qoldiradi?
Aggregatsiya sharti faqat HAVING da.
Guruhlarni filtrlaydi
Qatorlarni filtrlaydi
FROM → WHERE → GROUP BY → HAVING → SELECT
SUM, COUNT, AVG bo'yicha shart
Qator yoki guruh?
GROUP BY.
Aggregatsiya sharti.
| Xususiyat | WHERE | HAVING |
|---|---|---|
| Nimani filtrlaydi | Qatorlarni | Guruhlarni |
| Qachon ishlaydi | GROUP BY dan oldin | GROUP BY dan keyin |
| Aggregatsiya | Ishlatib bo'lmaydi | Ishlatiladi |
| Misol | Shahar = N'Toshkent' | SUM(Summa) > 4000000 |
| GROUP BY siz | Ishlaydi | Odatda kerak |
Pastga bosing: farqlar
GROUP BY bilan chiqaring.HAVING SUM(Summa) > 4000000 qo'shing va qaysi shahar tushib qolganini ko'ring.WHERE bilan Ekran toifasini olib tashlab, natijani solishtiring.
SELECT Shahar, SUM(Summa) AS Jami
FROM Sotuvlar
WHERE SUM(Summa) > 4000000
GROUP BY Shahar;
SELECT Shahar, SUM(Summa) AS Jami
FROM Sotuvlar
GROUP BY Shahar
HAVING SUM(Summa) > 4000000;
HAVING guruhlar sonini kamaytiradi.
WHERE SUM(Summa) > 4000000 so'rovini to'g'rilab, nima uchun xato ekanini yozing.Guruhlarni filtrlaydi.
Qatorlar yoki guruhlar.
FROM → WHERE → GROUP BY → HAVING.
Uyga vazifa: HAVING va WHERE bilan hisobotlar.
Kompleks tahlil
7-hafta · 19-dars