6-Amaliyot ishi
Mavzu: Group by va Order by standart so’zlaridan foydalanib so’rov yaratish.
HAVING standart so’zidan foydalanib so’rov yaratish.
Ishdan maqsad: Group by va Order by standart so’zilaridan foydalanish bo`yicha
ko`nikmaga ega bo`lish.
Masalani qo`yilishi: Berilgan predmet soha ma`lumotlar bazasidagi barcha ob`yektlarni
ustida tartiblash amallarini bajarish.
Uslubiy ko`rsatmalar: SQL – ORDER BY kalit so'z
ORDER BY kalit so'zidan natijani o'sish yoki kamayish tartibida tartiblash uchun
foydalaniladi va sukut bo'yicha yozuvlarni o'sish tartibida tartiblaydi. Yozuvlarni kamayish
tartibida tartiblash uchun DESC kalit so'zidan foydalaning. Ko'tarilish tartibida tartiblash uchun
ASC kalit so'zidan foydalaning.
ORDER BY
SELECT
select_list
FROM
table_name
ORDER BY
column1 [ASC|DESC],
column2 [ASC|DESC],
...;
ORDER BY buyrug’iga misol
SELECT
contactLastname,
contactFirstname
FROM
customers
ORDER BY
contactLastname;
SQL–GROUP BY kalit so'z
GROUP BY iborasi ko'pincha natijalarni bir yoki bir nechta ustunlarga guruhlash uchun
agregat funktsiyalaridan (COUNT, MAX, MIN, SUM, AVG) foydalaniladi.
GROUP BY
SELECT
c1, c2,..., cn, aggregate_function(ci)
FROM
table
WHERE
where_conditions
GROUP BY c1 , c2,...,cn;
SQL GROUP BY Misol
SELECT
status
FROM
orders
GROUP BY status;
Misol
SELECT
status, COUNT(*)
FROM
orders
GROUP BY status;
Misol
SELECT
status,
SUM(quantityOrdered * priceEach) AS amount
FROM
orders
INNER JOIN orderdetails
USING (orderNumber)
GROUP BY
status;
SQL – HAVING operatori
HAVING buyrug'i guruh yordamida amalga oshirilgan guruhlash natijalarini filtrlash
imkoniyatini beradi.
Yozuvlarni tanlash uchun shart qo'yadigan WHERE buyrug’i bilan vazifasi o’xshash.
HAVING sintaksisi
GROUP BY maydon HAVING shart;
HAVING buyrug’iga misollar.
Barcha misollar ushbu WORKERS jadvalida bo'ladi:
id
kod
name
Ism
age
yosh
salary
oylik
1
Дима
23
100
2
Петя
23
200
3
Вася
23
300
4
Коля
24
1000
5
Иван
24
2000
6
Кирилл
25
1000
Misol №1
Ushbu misolda GROUP BY HAVING operatorisiz ishlatilgan:
SELECT age, SUM(salary) as sum FROM workers GROUP BY age
age
yosh
sum
summa
23
600
24
3000
25
1000
Endi, HAVING shartdan foydalanib, biz faqat umumiy ish haqi 1000 dan katta yoki unga
teng bo'lgan satrlarni qoldiramiz:
SELECT age, SUM(salary) as sum FROM workers GROUP BY age HAVING
sum>=1000
age
yosh
sum
summa
24
3000
25
1000
Misol №2
Hisoblash funksiyasi (COUNT) dan foydalanib, guruhdagi yozuvlar sonini hisoblang
(HAVING dan foydalanmasdan):
SELECT age, COUNT(*) as count FROM workers GROUP BY age
age
возраст
count
количество
23
3
24
2
25
1
Endi, mavjud shartdan foydalanib, biz faqat satrlar soni ikkitadan kam yoki unga teng
bo'lgan guruhlarni qoldiramiz:
SELECT age, COUNT(*) as count FROM workers GROUP BY age
HAVING
count<=2
age
yosh
count
soni
24
2
25
1
Shunga o'xshash effektni quyidagi buyruq yordamida olish mumkin:
SELECT age, COUNT(*) as count FROM workers GROUP BY age
HAVING count IN(1,2);
BETWEEN buyrug'idan ham foydalanishingiz mumkin:
SELECT age, COUNT(*) as count FROM workers GROUP BY age
HAVING count BETWEEN 1 AND 2;
Misol №3
Quyidagi yozuvlarni o'z ichiga olgan CUSTOMERS jadvalini ko'rib chiqing.
SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM CUSTOMERS
GROUP BY age
HAVING COUNT (age) >= 2;
Ko'rinib turibdiki, HAVING dagi barcha buyruqlar WHERE uchun ham
mavjud.
Topshiriq:
1. Har bir talaba o’ziga berilgan predmet soha mavzusi bo’yicha HAVING operatoridan
foydalanib so’rovlar yaratishi va natijasi bilan ko’rsatib o’tishi kerak.
2. Har bir talaba o’ziga berilgan predmet soha mavzusi bo’yicha Order by, Group by
operatorlaridan foydalanib so’rovlar yaratishi va natijasi bilan ko’rsatib o’tishi kerak.