0% found this document useful (0 votes)
51 views20 pages

GROUP BY Klauzula Sa Proširenim Operacijama Proširenim Operacijama

The document discusses advanced GROUP BY clause operations in SQL such as ROLLUP, CUBE, GROUPING functions, and GROUPING SETS. ROLLUP generates subtotals by important grouping columns, while CUBE generates additional totals across less important grouping columns. GROUPING functions can identify rows created by ROLLUP or CUBE. GROUPING SETS allows defining multiple groupings over the same query. Combining columns and joining grouping sets provide more flexible grouping options.

Uploaded by

KenanMahmutović
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
51 views20 pages

GROUP BY Klauzula Sa Proširenim Operacijama Proširenim Operacijama

The document discusses advanced GROUP BY clause operations in SQL such as ROLLUP, CUBE, GROUPING functions, and GROUPING SETS. ROLLUP generates subtotals by important grouping columns, while CUBE generates additional totals across less important grouping columns. GROUPING functions can identify rows created by ROLLUP or CUBE. GROUPING SETS allows defining multiple groupings over the same query. Combining columns and joining grouping sets provide more flexible grouping options.

Uploaded by

KenanMahmutović
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20

GROUP BY klauzula sa

proirenim operacijama proirenim operacijama


Ciljevi
Poslije kompletiranja ove lekcije trebalo bi
se moi:
Koristiti ROLLUP operacija za prikazivanje
sumarnih vrijednosti
Koristiti CUBE operacija za prikazivanje Koristiti CUBE operacija za prikazivanje
unakrsnih vrijednosti
Upotrijebiti GROUPING funkcija za
identifikaciju kreiranih redova sa ROLLUP ili
CUBE
Upotrijebiti GROUPING SETS za kreiranje
jedinstvenih skupova rezultata
Grupne funkcije
Svrha grupnih funkcija je da rade na
grupisanju redova u cilju formiranja
rezultata po specifinim grupama
SELECT [column,] group_function(column). . . SELECT [column,] group_function(column). . .
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];
SQL> SELECT AVG(salary), STDDEV(salary),
COUNT(commission_pct),
MAX(hire_date)
FROM employees
WHERE department_id = 30;
Group by klauzula
Group by kalauzula sadri sve kolone koje
nisu grupne funkcije
SELECT [column,] group_function(column). . .
FROM table FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];
SQL> SELECT department_id, job_id,
2 AVG(salary), STDDEV(salary),
3 COUNT(commission_pct),
4 MAX(hire_date)
5 FROM employees
6 WHERE department_id = 30;
7 GROUP BY department_id, job_id
HAVING klauzula
HAVING klauzula se koristi za
specificiranje dodatnih uslova selekcije
(izbor grupa podataka koje e se prikazati u
rezultatu) rezultatu)
SELECT [column,] group_function(column). . .
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[HAVING having_expression]
[ORDER BY column];
GROUP BY sa ROLLUP i CUBE
operatorima
KoritenjemROLLUP ili CUBE sa GROUP BY
kreiraju se dodatni redove sa subtotalima i
unakrsnimreferenciranimkolonama
ROLLUP proizvodi skup redova koji sadre ROLLUP proizvodi skup redova koji sadre
dodatne redove sa vrijednostima subtotala po
vanimkolonama grupisanja
CUBE proizvodi dodatne redove kao i ROLLUP
sa redovima koji sadre dodatne totale po
manje vanimkolonama grupisanja
ROLLUP operator
ROLLUP je proirenje GROUP BY klauzule
KoritenjemROLLUP operacija proizvode
se dodatne sumarne vrijednosti
SELECT [column,] group_function(column). . .
FROM table
[WHERE condition]
[GROUP BY ROLLUP group_by_expression]
[HAVING having_expression]
[ORDER BY column];
ROLLUP operator
SQL> SELECT department_id, job_id, SUM(salary)
2 FROM employees
3 WHERE department_id < 50
4 GROUP BY ROLLUP(department_id, job_id);
DEPARTMENT_ID JOB_ID SUM(SALARY)
------------- ---------- ----------- ------------- ---------- -----------
10 AD_ASST 4400
10 4400
20 MK_MAN 13000
20 MK_REP 6000
20 19000
30 PU_MAN 11000
30 PU_CLERK 13900
30 24900
40 HR_REP 6500
40 6500
54800
1
2
3
CUBE operator
CUBE je proirenje GROUP BY klauzule
KoritenjemCUBE operacija proizvodi se
dodatne totali na kraju rezultata po manje
bitnimkolonama grupisanja bitnimkolonama grupisanja
SELECT [column,] group_function(column). . .
FROM table
[WHERE condition]
[GROUP BY CUBE group_by_expression]
[HAVING having_expression]
[ORDER BY column];
CUBE operator
SQL> SELECT department_id, job_id, SUM(salary)
2 FROM employees
3 WHERE department_id < 50
4 GROUP BY ROLLUP(department_id, job_id);
DEPARTMENT_ID JOB_ID SUM(SALARY)
------------- ---------- -----------
48300
MK_MAN 13000
MK_REP 6000
4
3
MK_REP 6000
PU_MAN 11000
AD_ASST 4400
PU_CLERK 13900
10 4400
10 AD_ASST 4400
20 19000
20 MK_MAN 13000
20 MK_REP 6000
30 24900
30 PU_MAN 11000
30 PU_CLERK 13900
1
2
3
GROUPING funkcija
GROUPING funkcija se moe koristiti ili sa
CUBE ili ROLLUP operatorom
KoritenjemGROUPING funkcija mogu se
formirati sumarne vrijednosti u redovima
Upotrebom GROUPING funkcija mogu se
razlikovati NULL vrijednost iz tabela od NULL razlikovati NULL vrijednost iz tabela od NULL
vrijednosti kreiranih sa ROLLUP ili CUBE
GROUPING funkcija vraa 0 ili 1
SELECT [column,] group_function(column) . ,
GROUPING(expr)
FROM table
[WHERE condition]
[GROUP BY [ROLLUP][CUBE] group_by_expression]
[HAVING having_expression]
[ORDER BY column];
GROUPING funkcija
SQL> SELECT department_id DEPTNO, job_id JOB,
2 SUM(salary),
3 GROUPING(department_id) GRP_DEPT,
4 GROUPING(job_id) GRP_JOB
5 FROM employees
6 WHERE department_id < 50
7 GROUP BY ROLLUP(department_id, job_id);
DEPTNO JOB SUM(SALARY) GRP_DEPT GRP_JOB DEPTNO JOB SUM(SALARY) GRP_DEPT GRP_JOB
---------- ---------- ----------- ---------- ----------
10 AD_ASST 4400 0 0
10 4400 0 1
20 MK_MAN 13000 0 0
20 MK_REP 6000 0 0
20 19000 0 1
30 PU_MAN 11000 0 0
30 PU_CLERK 13900 0 0
30 24900 0 1
40 HR_REP 6500 0 0
40 6500 0 1
54800 1 1
Grupisanje po skupovima
GROUPING SETS su dalja proirenja GROUP BY
klauzule
Upotrebom GROUPING SETS mogu se definisati
viestruke grupe podataka nad istim upitom
Oracle Server za sve grupe navedene u GROUPING
SETS klauzuli prvo izvri pojedinano grupisanje tih
podataka, pa ih potom kombinuje u rezultate sa
SETS klauzuli prvo izvri pojedinano grupisanje tih
podataka, pa ih potom kombinuje u rezultate sa
UNION ALL operacijom
Efikasnosti Grouping seta su:
Samo jednom se prolazi kroz podatke
Nije potrebno pisati kompleksne upite sa naredbom
UNION
to je vei broj elemenata GROUPING SETS to se
postie i vea efikasnost u pri izvrenju upita u
vremenskom smislu
GROUPING SETS
SQL> SELECT department_id, job_id,
2 manager_id,avg(salary)
3 FROM employees
4 WHERE department_id < 50
5 GROUP BY GROUPING SETS
6 ((department_id,job_id), (job_id,manager_id))
DEPARTMENT_ID JOB_ID MANAGER_ID AVG(SALARY)
------------- ---------- ---------- -----------
MK_MAN 100 13000
AD_ASST 101 4400
PU_MAN 100 11000
HR_REP 101 6500
MK_REP 201 6000
PU_CLERK 114 2780
20 MK_MAN 13000
30 PU_CLERK 2780
10 AD_ASST 4400
20 MK_REP 6000
30 PU_MAN 11000
40 HR_REP 6500
1
2
Kombinovane kolone
Kombinovane kolone su skup kolona koji se
tretiraju kao jedna kolona
ROLLUP (a, (b, c) ,d)
Specifikacija kombinovanih kolona koja se Specifikacija kombinovanih kolona koja se
koriste sa GROUP BY klauzulom piu se u
zagradama, a Oracle server ih tretira kao
jedno polje u ROLLUP ili CUBE
operacijama
Kombinovane kolone
SQL> SELECT department_id, job_id, manager_id,
2 SUM(salary)
3 FROM employees
4 GROUP BY ROLLUP( department_id,
5 (job_id, manager_id));
DEPARTMENT_ID JOB_ID MANAGER_ID SUM(SALARY)
------------- ---------- ---------- -----------
10 AD_ASST 101 4400
10 4400 10 4400
20 MK_MAN 100 13000
20 MK_REP 201 6000
20 19000
...
100 FI_MGR 101 12000
100 FI_ACCOUNT 108 39600
100 51600
110 AC_MGR 101 12000
110 AC_ACCOUNT 205 8300
110 20300
691400
Spajanje grupa
Spajanje grupa omoguava koncizan nain
za kombinaciju grupa
Rezultat je unakrsni proizvod grupa iz
grouping set-a grouping set-a
GROUP BY GROUPING SETS (a,b),
GROUPING SETS(c,d)
Spajanje grupa
SQL> SELECT department_id, job_id, manager_id,
2 SUM(salary)
3 FROM employees
4 where department_id < 30
5 GROUP BY department_id,
6 ROLLUP(job_id),
7 CUBE(manager_id);
DEPARTMENT_ID JOB_ID MANAGER_ID SUM(SALARY)
------------- ---------- ---------- ----------- ------------- ---------- ---------- -----------
10 AD_ASST 101 4400
20 MK_MAN 100 13000
20 MK_REP 201 6000
10 AD_ASST 4400
20 MK_MAN 13000
20 MK_REP 6000
10 101 4400
10 4400
20 100 13000
20 201 6000
20 19000
Kratak pregled
ROLLUP operacija se koristi za formiranje subtotal
vrijednosti
CUBE operacija se koristi za formiranje subtotala po
manje vanimkolonama grupisanimna kraju
rezultata
GROUPING funkcija se koristi za identifikaciju GROUPING funkcija se koristi za identifikaciju
redova kreiranih pomou ROLLUP ili CUBE
GROUPING SETS sintaksa se koristi za definisanje
grupa za grupisanje u istom upitu
GROUP BY klauzula u proirenom smislu se koristi
za kombinaciju izraza za:
Kompozitne kolone
Spajanjemskupova grupisanja
GROUP BY klauzula sa
proirenim operacijama proirenim operacijama

You might also like