Клаузула СКЛ ГРОУП БИ и ХАВИНГ са примерима

Преглед садржаја:

Anonim

Шта је клаузула СКЛ Гроуп би Цлаусе?

Клаузула ГРОУП БИ је СКЛ наредба која се користи за груписање редова који имају исте вредности . Клаузула ГРОУП БИ користи се у наредби СЕЛЕЦТ. По жељи се користи заједно са скупним функцијама за израду збирних извештаја из базе података.

То је оно што сумира податке из базе података.

Упити који садрже клаузулу ГРОУП БИ називају се групираним упитима и враћају само један ред за сваку групирану ставку.

Синтакса СКЛ ГРОУП БИ

Сад кад знамо шта је клаузула СКЛ ГРОУП БИ, погледајмо синтаксу основне групе према упиту.

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.

Резиме

  • Клаузула ГРОУП БИ користи се за груписање редова са истим вредностима.
  • Клаузула ГРОУП БИ користи се заједно са СКЛ СЕЛЕЦТ наредбом.
  • Израз СЕЛЕЦТ који се користи у клаузули ГРОУП БИ може се користити само садржи имена ступаца, агрегатне функције, константе и изразе.
  • Клаузула СКЛ Има се користи за ограничавање резултата које враћа клаузула ГРОУП БИ.
  • Клаузула МИСКЛ ГРОУП БИ користи се за прикупљање података из више записа и враћеног записа постављеног једном или више колона.