1-mavzu. Ma’lumotlar bazasi obyektlarini yaratish


Guruhlarni filterlash. HAVING



Download 0,87 Mb.
bet10/48
Sana23.06.2022
Hajmi0,87 Mb.
#694675
1   ...   6   7   8   9   10   11   12   13   ...   48
Bog'liq
мавзулар MBDM

Guruhlarni filterlash. HAVING
HAVING bandi chiqishga qaysi guruhlar ko`rinishini aniqlaydi, ya'ni guruhlarni filtrlaydi.
HAVING-dan foydalanish WHERE-ga o'xshashdir. Faqat qatorlarni filtrlash uchun WHERE qo`llanilgan bo’lib, undan keyin HAVING guruhlarni filtrlash uchun ishlatiladi.
Masalan, ishlab chiqaruvchilar bo'yicha tovarlarning barcha guruhlarini topaylik, unda tovar guruhlari uchun hech bo’lmaganda bitta modelga ega:
SELECT Manufacturer, COUNT(*) AS ModelsCount
FROM Products
GROUP BY Manufacturer
HAVING COUNT(*) > 1

Bundan tashqari, bitta ifodada WHERE va HAVING bandlaridan foydalanish mumkin:
SELECT Manufacturer, COUNT(*) AS ModelsCount
FROM Products
WHERE Price * ProductCount > 80000
GROUP BY Manufacturer
HAVING COUNT(*) > 1
Ya'ni, bu holda, avval qatorlar filterlanadi: umumiy qiymati 80000 dan yuqori bo’lgan tovarlar tanlanadi. Shundan so'ng tanlangan tovarlar ishlab chiqaruvchilar bo'yicha guruhlanadi. Undan keyin guruhlarning o`zi filtrlanadi - 1 dan ortiq modelni o`z ichiga olgan guruhlar tanlanadi.
Agar tartiblash talab qilinsa, ORDER BY bandi HAVING bandidan keyin keladi:
SELECT Manufacturer, COUNT(*) AS Models, SUM(ProductCount) AS Units
FROM Products
WHERE Price * ProductCount > 80000
GROUP BY Manufacturer
HAVING SUM(ProductCount) > 2
ORDER BY Units DESC

Bunday holda, guruhlash ishlab chiqaruvchilar bo'yicha amalga oshiriladi va har bir ishlab chiqaruvchi uchun modellar soni (Models) va ushbu modellar uchun barcha mahsulotlarning umumiy soni (Units) ham tanlanadi. Oxir-oqibat, guruhlar mahsulot soniga qarab kamayish tartibida saralanadi.



INNER/OUTER JOIN ifodalarida guruhlashdan ham foydalanish mumkin. Masalan, har bir foydalanuvchi uchun qancha buyurtma berilganligini aniqlaylik:


SELECT FirstName, COUNT(Orders.Id)
FROM Customers JOIN Orders
ON Orders.CustomerId = Customers.Id
GROUP BY Customers.Id, Customers.FirstName;

Guruhlash mezonlari Id va xaridorning ismidir. SELECT buyrug'i Orders jadvalidagi Id ustuni yordamida mijozning ismini va buyurtmalar sonini tanlaydi.
INNER JOIN bo'lgani uchun, guruhlarga faqat buyurtma bergan mijozlar kiradi.
Agar buyurtmaga ega bo'lmagan xaridorlarni ham olish zarur bo'lsa, unda OUTER JOIN ishlatiladi:
SELECT FirstName, COUNT(Orders.Id)
FROM Customers LEFT JOIN Orders
ON Orders.CustomerId = Customers.Id
GROUP BY Customers.Id, Customers.FirstName;

Yoki buyurtmalarning umumiy miqdori bilan mahsulotlarni o`qib olamiz:
SELECT Products.ProductName, Products.Manufacturer,
SUM(Orders.ProductCount * Orders.Price) AS Units
FROM Products LEFT JOIN Orders
ON Orders.ProductId = Products.Id
GROUP BY Products.Id, Products.ProductName, Products.Manufacturer




Download 0,87 Mb.

Do'stlaringiz bilan baham:
1   ...   6   7   8   9   10   11   12   13   ...   48




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish