Шта је клаузула СКЛ Гроуп би Цлаусе?
Клаузула ГРОУП БИ је СКЛ наредба која се користи за груписање редова који имају исте вредности . Клаузула ГРОУП БИ користи се у наредби СЕЛЕЦТ. По жељи се користи заједно са скупним функцијама за израду збирних извештаја из базе података.
То је оно што сумира податке из базе података.
Упити који садрже клаузулу ГРОУП БИ називају се групираним упитима и враћају само један ред за сваку групирану ставку.
Синтакса СКЛ ГРОУП БИ
Сад кад знамо шта је клаузула СКЛ ГРОУП БИ, погледајмо синтаксу основне групе према упиту.
SELECT statements… GROUP BY column_name1[,column_name2,… ] [HAVING condition];
ОВДЕ
- "СЕЛЕЦТ наредбе ..." је стандардни СКЛ наредбени упит.
- „ ГРОУП БИ име_колоне1“ је клаузула која врши груписање на основу имена_колоне1.
- „[, име_колоне2, ...]“ није обавезно; представља друга имена колона када се груписање врши на више колона.
- „[ХАВИНГ цондитион]“ није обавезно; користи се за ограничавање редова на које утиче клаузула ГРОУП БИ. Слично је клаузули ВХЕРЕ.
Груписање помоћу једне колоне
Да бисмо лакше разумели ефекат клаузуле СКЛ Гроуп Би, извршимо једноставан упит који враћа све родне уносе из табеле чланова.
SELECT `gender` FROM `members` ;
gender |
---|
Female |
Female |
Male |
Female |
Male |
Male |
Male |
Male |
Male |
Претпоставимо да желимо да добијемо јединствене вредности за полове. Можемо користити следећи упит -
SELECT `gender` FROM `members` GROUP BY `gender`;
Извршење горње скрипте у МиСКЛ радном окружењу против Мифликдб даје нам следеће резултате.
gender |
---|
Female |
Male |
Имајте на уму да су враћена само два резултата. То је зато што имамо само два типа пола, мушки и женски. Клаузула ГРОУП БИ у СКЛ-у груписала је све чланове „Мушки“ и за то вратила само један ред. Исто је учинило и са „Женским“ члановима.
Груписање помоћу више колона
Претпоставимо да желимо да добијемо листу филмова цатегори_ид и одговарајуће године у којима су објављени.
Посматрајмо излаз овог једноставног упита
SELECT `category_id`,`year_released` FROM `movies` ;
category_id | year_released |
---|---|
1 | 2011 |
2 | 2008 |
NULL | 2008 |
NULL | 2010 |
8 | 2007 |
6 | 2007 |
6 | 2007 |
8 | 2005 |
NULL | 2012 |
7 | 1920 |
8 | NULL |
8 | 1920 |
Горе наведени резултат има много дупликата.
Извршимо исти упит користећи гроуп би у СКЛ-у -
SELECT `category_id`,`year_released` FROM `movies` GROUP BY `category_id`,`year_released`;
Извршавање горње скрипте у МиСКЛ радном окружењу против мифликдб даје нам следеће резултате приказане у наставку.
category_id | year_released |
---|---|
NULL | 2008 |
NULL | 2010 |
NULL | 2012 |
1 | 2011 |
2 | 2008 |
6 | 2007 |
7 | 1920 |
8 | 1920 |
8 | 2005 |
8 | 2007 |
Клаузула ГРОУП БИ делује и на ид категорије и на годину објављену да би идентификовала јединствене редове у нашем горњем примеру.
Ако је идентификатор категорије исти, али је година издања другачија, тада се ред третира као јединствени. Ако су ИД категорије и година објављивања исти за више од једног реда, онда се сматра дупликатом и само једним редом је приказан.
Груписање и агрегатне функције
Претпоставимо да желимо укупан број мушкараца и жена у нашој бази података. За то можемо користити следећу скрипту приказану доле.
SELECT `gender`,COUNT(`membership_number`) FROM `members` GROUP BY `gender`;
Извршавање горње скрипте у МиСКЛ радном окружењу против мифликдб даје нам следеће резултате.
gender | COUNT('membership_number') |
---|---|
Female | 3 |
Male | 5 |
Резултати приказани у наставку су груписани према свим објављеним јединственим полним вредностима и број груписаних редова се броји помоћу функције ЗБРОЈАВАЊА ЦОУНТ.
Ограничавање резултата упита помоћу клаузуле ХАВИНГ
Није увек да ћемо желети да извршимо груписање свих података у датој табели. Биће времена када ћемо желети да своје резултате ограничимо на одређене задате критеријуме. У таквим случајевима можемо користити клаузулу ХАВИНГ
Претпоставимо да желимо да знамо све године издавања за категорију 8. филма. Користили бисмо следећу скрипту да бисмо постигли наше резултате.
SELECT * FROM `movies` GROUP BY `category_id`,`year_released` HAVING `category_id` = 8;
Извршавање горње скрипте у МиСКЛ радном окружењу против Мифликдб даје нам следеће резултате приказане у наставку.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
9 | Honey mooners | John Schultz | 2005 | 8 |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
Имајте на уму да наша клаузула ГРОУП БИ утиче само на филмове са категоријом ид 8.
Резиме
- Клаузула ГРОУП БИ користи се за груписање редова са истим вредностима.
- Клаузула ГРОУП БИ користи се заједно са СКЛ СЕЛЕЦТ наредбом.
- Израз СЕЛЕЦТ који се користи у клаузули ГРОУП БИ може се користити само садржи имена ступаца, агрегатне функције, константе и изразе.
- Клаузула СКЛ Има се користи за ограничавање резултата које враћа клаузула ГРОУП БИ.
- Клаузула МИСКЛ ГРОУП БИ користи се за прикупљање података из више записа и враћеног записа постављеног једном или више колона.