JavaRush /Kurslar /All lectures for UZ purposes /Bir nechta kolonka bo'yicha guruhlash

Bir nechta kolonka bo'yicha guruhlash

All lectures for UZ purposes
Daraja , Dars
Mavjud

4.1 Guruhlashda kolonlar

Yana juda muhim narsa, agar sen yozuvlarni guruhlayotgan bo'lsang, SELECT bo'limida faqat ma'lumotlarni guruhlash uchun ishlatiladigan kolonlarni ko'rsatish mumkin.

Sen yozolmaysan so'rov turini va SELECT bo'limida name kolonkasini ko'rsatolmaysan:


SELECT brand, name
FROM product  	
GROUP BY brand
        

Sen product jadvalida bir buncha qatorlar name maydoni bilan bor, va qaysi qatorning qiymatini bu yerga qo'yish kerakligi tushunarsiz. Yana bir o'ylab ko'r: sen har bir brendning mahsulot miqdorini bilmoqchisan va qanday qilib natijaviy jadvalga mahsulot nomi tushishi mumkin?

Agar sen GROUP BY operatoridan foydalansang, natijangga oddiy qatorlar emas, balki guruhlangan ma'lumotlar va "hisoblangan kolonlar" kiradi, masalan COUNT(*)

4.2 Hisoblangan kolonka bo'yicha guruhlash

Lekin sen bir nechta kolonka va hatto hisoblangan kolonka bo'yicha guruhlashni amalga oshirishing mumkin. Misol:


SELECT 
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee  	
GROUP BY hire_year
        

Bu so'rovning natijasi:

hire_year total
2012 1
2013 1
2014 1
2015 2
2018 1

Keling, so'rovimizni ko'rib chiqamiz.

employee jadvalida har bir xodimning o'ziga xos yollanish sanasi mavjud, shuning uchun uni guruhlash orqali ma'lumotlarni olish imkonsiz – har bir sana uchun bitta yozuv bo'ladi va guruhlash hech qanday ma'noga ega bo'lmaydi. Lekin yollanish sanasidan yollanish yiliga o'tsak, bir yil ichida bir nechta xodimlar yollangan bo'lishi mumkin.

Keling, guruhlashdan oldin ushbu jadval qanday ko'rinishini ko'rib chiqaylik:


SELECT
 	id,
 	name,
 	YEAR(join_date) AS hire_year,
 	join_date
FROM employee
        

Bu so'rovning natijasi:

id name hire_year join_date
1 Ivanov Ivan 2012 2012-06-30
2 Petrov Petr 2013 2013-08-12
3 Ivanov Sergey 2014 2014-01-01
4 Rabinovich Moysha 2015 2015-05-12
5 Kiriyenko Anastasiya 2015 2015-10-10
6 Vaska 2018 2018-11-11

Bu natijaviy jadvalni hire_year bo'yicha guruhlash va qaysi yilda qancha odam yollanganini bilish mumkin.

4.3 Bir nechta kolonka bo'yicha guruhlash

Endi har bir yilda qaysi oylarda qancha xodimni yollaganligimizni bilishga harakat qilamiz. Buning uchun so'rovga bir emas, balki bir vaqtning o'zida ikkita hisoblangan maydonni qo'shishimiz kerak – yollanish yili (hire_year) va yollanish oyi (hire_month).

Keling, shunday so'rov yozamiz:


SELECT
 	id,
 	name,
 	YEAR(join_date) AS hire_year,
 	MONTH(join_date) AS hire_month,
 	join_date
FROM employee
        

Bu so'rovning natijasi:

id name hire_year hire_month join_date
1 Ivanov Ivan 2012 6 2012-06-30
2 Petrov Petr 2013 8 2013-08-12
3 Ivanov Sergey 2014 1 2014-01-01
4 Rabinovich Moysha 2015 5 2015-05-12
5 Kiriyenko Anastasiya 2015 10 2015-10-10
6 Vaska 2018 11 2018-11-11

Agar biz ushbu natijaviy jadvallni oynalar bo'yicha guruhlasak, shunchaki odamlarni guruhlarga birlashtirib qo'yamiz, yollanish yiliga e'tibor bermasdan. Ammo bizga natijaviy jadvalda uchta kolon kerak: yil, oy va yollangan xodimlar soni.

Buning uchun GROUP BY operatoridan so'ng bitta kolon nomi emas, balki ikkita kolon nomini ishlatish kerak. Misol:


SELECT
 	YEAR(join_date) AS hire_year,
 	MONTH(join_date) AS hire_month,
 	COUNT(*) AS total
FROM employee
GROUP BY hire_year, hire_month
        

Bu so'rovning natijasi:

hire_year hire_month total
2012 6 1
2013 8 1
2014 1 1
2015 5 1
2015 10 1
2018 11 1

Jadvalidagi yozuvlar kam, shuning uchun total kolonida hamma joyda birliklar bor. Darvoqe, e'tibor bering, qancha ko'p kolon bo'yicha guruhlasak, natijada shunchalik ko'p qator bo'ladi.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION