Све су то збирне функције
- Извођење прорачуна на више редова
- Из једне колоне табеле
- И враћање једне вредности.
ИСО стандард дефинише пет (5) агрегатних функција, наиме;
1) ЦОУНТ
3) Просек
4) МИН
5) МАКС
Зашто користити агрегатне функције.
Из пословне перспективе, различити нивои организације имају различите захтеве за информацијама. Менаџери највишег нивоа су обично заинтересовани да знају целе фигуре, а нису им потребни појединачни детаљи.
> Збирне функције омогућавају нам да лако произведемо сажете податке из наше базе података.
На пример, из наше базе података мифлик, управљање може захтевати следеће извештаје
- Најмање изнајмљени филмови.
- Већина изнајмљених филмова.
- Просечан број издатих филмова за месец дана.
Горе наведене извештаје лако израђујемо помоћу обједињених функција.
Размотримо детаљно агрегатне функције.
ЦОУНТ функција
Функција ЦОУНТ враћа укупан број вредности у наведеном пољу. Ради и на нумеричким и на не-нумеричким врстама података. Све обједињене функције по дефаулту изузимају нулл вредности пре рада на подацима.
ЦОУНТ (*) је посебна имплементација функције ЦОУНТ која враћа број свих редова у наведеној табели. ЦОУНТ (*) такође узима у обзир нуле и дупликате.
Табела приказана доле приказује податке у табели филмских филмова
референтни број | Датум трансакције | Датум повратка | члански број | мовие_ид | филм_ се вратио |
---|---|---|---|---|---|
11 | 20-06-2012 | НУЛА | 1 | 1 | 0 |
12 | 22-06-2012 | 25-06-2012 | 1 | 2 | 0 |
13 | 22-06-2012 | 25-06-2012 | 3 | 2 | 0 |
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |
15 | 23-06-2012 | НУЛА | 3 | 3 | 0 |
Претпоставимо да желимо да утврдимо колико пута је филм са ид 2 изнајмљен
SELECT COUNT(`movie_id`) FROM `movierentals` WHERE `movie_id` = 2;
Извршење горњег упита у МиСКЛ радном окружењу против мифликдб даје нам следеће резултате.
COUNT('movie_id') |
---|
3 |
ДИСТИНЦТ Кључна реч
Кључна реч ДИСТИНЦТ која нам омогућава да изоставимо дупликате из резултата. То се постиже груписањем сличних вредности.
Да бисмо уважили концепт Дистинцт, допуштамо извршавање једноставног упита
SELECT `movie_id` FROM `movierentals`;
movie_id |
---|
1 |
2 |
2 |
2 |
3 |
Извршимо сада исти упит са различитом кључном речи -
SELECT DISTINCT `movie_id` FROM `movierentals`;
Као што је приказано доле, различити изостављају дупликате записа из резултата.
movie_id |
---|
1 |
2 |
3 |
МИН функција
Функција МИН враћа најмању вредност у наведеном пољу табеле .
Као пример, претпоставимо да желимо да знамо годину у којој је објављен најстарији филм у нашој библиотеци, можемо да користимо МиСКЛ-ову функцију МИН да бисмо добили жељене информације.
Следећи упит нам помаже да то постигнемо
SELECT MIN(`year_released`) FROM `movies`;
Извршење горњег упита у МиСКЛ радном окружењу против мифликдб даје нам следеће резултате.
MIN('year_released') |
---|
2005 |
МАКС функција
Баш као што и само име говори, функција МАКС је супротна функцији МИН. То враћа највећу вредност из табеле области наведеног .
Претпоставимо да желимо да добијемо годину када је објављен најновији филм у нашој бази података. Да бисмо то постигли, лако можемо користити функцију МАКС.
Следећи пример даје последњу објављену филмску годину.
SELECT MAX(`year_released`) FROM `movies`;
Извршење горњег упита у МиСКЛ радном окружењу помоћу мифликдб даје нам следеће резултате.
MAX('year_released') |
---|
2012 |
СУМ функција
Претпоставимо да желимо извештај који даје укупан износ до сада извршених уплата. Можемо да користимо МиСКЛ СУМ функцију која враћа збир свих вредности у наведеној колони . СУМ ради само на нумеричким пољима . Нулове вредности су изузете из враћеног резултата.
Следећа табела приказује податке у табели плаћања-
ид_плаћања | члански број | Датум исплате | Опис | износ плаћен | спољна_ референца _број |
---|---|---|---|---|---|
1 | 1 | 23-07-2012 | Плаћање изнајмљивања филма | 2500 | 11 |
2 | 1 | 25-07-2012 | Плаћање изнајмљивања филма | 2000 | 12 |
3 | 3 | 30-07-2012 | Плаћање изнајмљивања филма | 6000 | НУЛА |
Упит приказан у наставку добија све извршене уплате и сумира их да би се добио један резултат.
SELECT SUM(`amount_paid`) FROM `payments`;
Извршење горњег упита у МиСКЛ радном окружењу против мифликдб даје следеће резултате.
SUM('amount_paid') |
---|
10500 |
АВГ функција
МиСКЛ АВГ функција враћа просек вредности у одређеној колони . Баш као и функција СУМ, она ради само на нумеричким типовима података .
Претпоставимо да желимо да пронађемо просечан уплаћени износ. Можемо користити следећи упит -
SELECT AVG(`amount_paid`) FROM `payments`;
Извршење горњег упита у МиСКЛ радном окружењу даје нам следеће резултате.
AVG('amount_paid') |
---|
3500 |
Резиме
- МиСКЛ подржава свих пет (5) ИСО стандардних агрегатних функција ЦОУНТ, СУМ, АВГ, МИН и МАКС.
- СУМ и АВГ функције раде само на нумеричким подацима.
- Ако желите да изузмете дупликате вредности из резултата обједињене функције, користите кључну реч ДИСТИНЦТ. Кључна реч АЛЛ укључује чак и дупликате. Ако ништа није наведено, подразумева се СВЕ.
- Агрегатне функције могу се користити заједно са другим СКЛ клаузулама као што је ГРОУП БИ
Мозгалица
Мислите да су скупне функције једноставне. Пробајте ово!
Следећи пример групише чланове по именима, броји укупан број уплата, просечан износ уплате и укупан износ износа уплата.
SELECT m.`full_names`,COUNT(p.`payment_id`) AS `paymentscount`,AVG(p.`amount_paid`) AS `averagepaymentamount`,SUM(p.`amount_paid`) AS `totalpayments` FROM members m, payments p WHERE m.`membership_number` = p.`membership_number` GROUP BY m.`full_names`;
Извршење горњег примера у МиСКЛ радном окружењу даје нам следеће резултате.