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.
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 ratings0% 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.
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