Велики део моћи релационих база података потиче од филтрирања података и спајања табела. Због тога ми у првом реду представљамо те односе. Али савремени системи база података пружају још једну драгоцену технику: груписање.

Груписање вам омогућава да из базе података извучете сажете информације. Омогућава вам комбиновање резултата да бисте створили корисне статистичке податке. Груписање вас штеди од писања кода за уобичајене случајеве, као што је просечавање спискова слика. А то може створити ефикасније системе.

Шта ради клаузула ГРОУП БИ?

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

Следи врло једноставна база података са две табеле које представљају албуме записа. Такву базу података можете поставити до писање основне шеме за изабрани систем база података. Тхе албуми табела има девет редова са примарним кључем

instagram viewer
ид колона и колоне за име, извођача, годину издања и продају:

++++++
|. | ид | име | артист_ид | релеасе_иеар | продаја |
++++++
|. | 1 | Аббеи Роад | 1 | 1969 | 14 |
|. | 2 | Тамна страна Месеца | 2 | 1973 | 24 |
|. | 3 | Гласине | 3 | 1977 | 28 |
|. | 4 | Нема везе | 4 | 1991 | 17 |
|. | 5 | Животиње | 2 | 1977 | 6 |
|. | 6 | Збогом Иеллов Брицк Роад | 5 | 1973 | 8 |
| 7 | 21 | 6 | 2011 | 25 |
| 8 | 25 | 6 | 2015 | 22 |
|. | 9 | Бат Оут оф Хелл | 7 | 1977 | 28 |
++++++

Тхе уметници сто је још једноставнији. Има седам редова са колонама ид и наме:

+++
|. | ид | име |
+++
|. | 1 | Тхе Беатлес |
|. | 2 | Пинк Флоид |
|. | 3 | Флеетвоод Мац |
|. | 4 | Нирвана |
|. | 5 | Елтон Јохн |
|. | 6 | Аделе |
|. | 7 | Месна штруца |
+++

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

Груписање по једној колони

Рецимо да желимо да сазнамо колико албума имамо за сваког извођача. Почните са типичним СЕЛЕЦТ упит за преузимање колоне артист_ид:

ИЗАБЕРИ артист_ид ИЗ албума

Ово враћа свих девет редова, како се очекивало:

++
|. | артист_ид |
++
| 1 |
| 2 |
| 3 |
| 4 |
| 2 |
| 5 |
| 6 |
| 6 |
| 7 |
++

Да бисте уметнике групирали ове резултате, додајте фразу ГРОУП БИ артист_ид:

ИЗАБЕРИ артист_ид ИЗ албума ГРОУП БИ артист_ид

Што даје следеће резултате:

++
|. | артист_ид |
++
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
++

У скупу резултата налази се седам редова, умањених са укупних девет у албуми сто. Свака јединствена артист_ид има један ред. Коначно, да бисте добили стварни број, додајте ЦОУНТ (*) у изабране колоне:

СЕЛЕЦТ ИД_извођача, ЦОУНТ (*)
ИЗ албума
ГРОУП БИ артист_ид
+++
|. | артист_ид | ЦОУНТ (*) |
+++
| 1 | 1 |
| 2 | 2 |
| 3 | 1 |
| 4 | 1 |
| 5 | 1 |
| 6 | 2 |
| 7 | 1 |
+++

Резултати групишу два пара редова за уметнике са ИД-овима 2 и 6. Сваки има два албума у ​​нашој бази података.

Повезан: Основне информације о СКЛ наредбама за почетнике

Како приступити груписаним подацима са обједињеном функцијом

Можда сте користили ЦОУНТ функција пре, посебно у ЦОУНТ (*) облик као што се види горе. Дохваћа број резултата у скупу. Помоћу ње можете добити укупан број записа у табели:

ОДАБЕРИТЕ БРОЈ (*) ИЗ албума
++
|. | ЦОУНТ (*) |
++
| 9 |
++

ЦОУНТ је збирна функција. Овај термин се односи на функције које преводе вредности из више редова у једну вредност. Често се користе заједно са наредбом ГРОУП БИ.

Уместо да само пребројимо број редова, можемо да применимо обједињену функцију на груписане вредности:

ИЗБОР уметника_ид, СУМ (продаја)
ИЗ албума
ГРОУП БИ артист_ид
+++
|. | артист_ид | СУМ (продаја) |
+++
| 1 | 14 |
| 2 | 30 |
| 3 | 28 |
| 4 | 17 |
| 5 | 8 |
| 6 | 47 |
| 7 | 28 |
+++

Укупна продаја приказана горе за уметнике 2 и 6 представља продају више њихових албума заједно:

ИЗБОР уметника_ид, продаја
ИЗ албума
ГДЕ уметник_ид (2, 6)
+++
|. | артист_ид | продаја |
+++
| 2 | 24 |
| 2 | 6 |
| 6 | 25 |
| 6 | 22 |
+++

Груписање по више колона

Можете да групишете у више колона. Само укључите више колона или израза одвојених зарезима. Резултати ће се груписати према комбинацији ових колона.

СЕЛЕЦТ издање_године, продаја, број (*)
ИЗ албума
ГРОУП БИ релеасе_иеар, продаја

Ово ће обично дати више резултата него груписање у једну колону:

++++
|. | релеасе_иеар | продаја | цоунт (*) |
++++
| 1969 | 14 | 1 |
| 1973 | 24 | 1 |
| 1977 | 28 | 2 |
| 1991 | 17 | 1 |
| 1977 | 6 | 1 |
| 1973 | 8 | 1 |
| 2011 | 25 | 1 |
| 2015 | 22 | 1 |
++++

Имајте на уму да у нашем малом примеру само два албума имају исту годину издања и број продаја (28 у 1977).

Корисне агрегатне функције

Поред ЦОУНТ, неколико функција добро функционише са ГРОУП. Свака функција враћа вредност на основу записа који припадају свакој групи резултата.

  • ЦОУНТ () даје укупан број одговарајућих записа.
  • СУМ () враћа зброј свих вредности у датој колони.
  • МИН () враћа најмању вредност у датом ступцу.
  • МАКС () враћа највећу вредност у датом ступцу.
  • АВГ () враћа средњи просек. То је еквивалент СУМ () / ЦОУНТ ().

Ове функције можете користити и без клаузуле ГРОУП:

ОДАБЕРИТЕ АВГ (продаја) ИЗ албума
++
|. | АВГ (продаја) |
++
| 19.1111 |
++

Коришћење ГРОУП БИ са клаузулом ВХЕРЕ

Као и код нормалног СЕЛЕЦТ-а, и даље можете користити ВХЕРЕ за филтрирање скупа резултата:

СЕЛЕЦТ ИД_извођача, ЦОУНТ (*)
ИЗ албума
ВХЕРЕ издање_година> 1990
ГРОУП БИ артист_ид
+++
|. | артист_ид | ЦОУНТ (*) |
+++
| 4 | 1 |
| 6 | 2 |
+++

Сада имате само оне албуме објављене после 1990. године, груписане по извођачима. Такође можете користити удруживање са клаузулом ВХЕРЕ, независно од ГРОУП БИ:

СЕЛЕЦТ р.наме, ЦОУНТ (*) АС албума
ИЗ албума ал, уметници р
ГДЕ уметник_ид = р.ид
И релеасе_иеар> 1990
ГРОУП БИ артист_ид
+++
|. | име | албуми |
+++
|. | Нирвана | 1 |
|. | Аделе | 2 |
+++

Међутим, имајте на уму да ако покушате да филтрирате на основу обједињене колоне:

СЕЛЕЦТ р.наме, ЦОУНТ (*) АС албума
ИЗ албума ал, уметници р
ГДЕ уметник_ид = р.ид
И албуми> 2
ГРОУП БИ артист_ид;

Добићете грешку:

ГРЕШКА 1054 (42С22): Непозната колона „албуми“ у „клаузули“

Колоне засноване на збирним подацима нису доступне клаузули ВХЕРЕ.

Коришћење клаузуле ХАВИНГ

Па, како филтрирате скуп резултата након што је извршено груписање? Тхе ХАВИНГ клаузула се бави овом потребом:

СЕЛЕЦТ р.наме, ЦОУНТ (*) АС албума
ИЗ албума ал, уметници р
ГДЕ уметник_ид = р.ид
ГРОУП БИ артист_ид
ИМАЈУ албуме> 1;

Имајте на уму да клаузула ХАВИНГ долази иза ГРОУП БИ. Иначе, то је у основи једноставна замена ГДЕ са ХАВИНГ. Резултати су:

+++
|. | име | албуми |
+++
|. | Пинк Флоид | 2 |
|. | Аделе | 2 |
+++

И даље можете користити ВХЕРЕ услов за филтрирање резултата пре груписања. Радиће заједно са клаузулом ХАВИНГ за филтрирање након груписања:

СЕЛЕЦТ р.наме, ЦОУНТ (*) АС албума
ИЗ албума ал, уметници р
ГДЕ уметник_ид = р.ид
И релеасе_иеар> 1990
ГРОУП БИ артист_ид
ИМАЈУ албуме> 1;

Само један уметник у нашој бази података објавио је више од једног албума после 1990:

+++
|. | име | албуми |
+++
|. | Аделе | 2 |
+++

Комбиновање резултата са ГРОУП БИ

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

Једном када схватите груписање и како спојити више табела, моћи ћете да искористите већину снаге релационе базе података.

Емаил
Како истовремено извршити упит за више табела базе података помоћу СКЛ придруживања

Научите како да користите СКЛ придруживања за поједностављивање упита, уштеду времена и стварање осећаја да сте СКЛ напредни корисник.

Повезане теме
  • Програмирање
  • СКЛ
О аутору
Бобби Јацк (Објављено 28 чланака)

Бобби је технолошки ентузијаст који је радио као програмер већину две деценије. Заљубљен је у игре на срећу, радећи као уредник рецензија у часопису Свитцх Плаиер, и уживан је у свим аспектима објављивања на мрежи и веб развоја.

Још од Бобби Јацк-а

Претплатите се на наш билтен

Придружите се нашем билтену за техничке савете, прегледе, бесплатне е-књиге и ексклузивне понуде!

Још један корак…!

Молимо потврдите своју адресу е-поште у е-поруци коју смо вам управо послали.

.