Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Raggruppamento in SQL Esempio di raggruppamento
È possibile dare un nome alle colonne tramite AS
2
Raggruppamento in SQL Un altro esempio
3
Raggruppamento in SQL Le funzioni aggregate non si possono innestare
Nell’esempio non possiamo calcolare la media dei totali, perchè non possiamo scrivere avg(sum(QUANTITA))
4
Raggruppamento in SQL Le funzioni aggregate non si possono innestare: si può fare il calcolo in più passi usando le viste Nell’esempio
5
Raggruppamento in SQL Il GROUP BY riporta solo le combinazioni presenti Come ottenere anche che la combinazione (MI,GEN1) con TOQUANTITA’ pari a zero?
6
Raggruppamento in SQL Opzione ALL nella clausola GROUP BY : GROUP BY ALL In questo modo ottengo tutte le possibili combinazioni, quindi anche (MI,GEN1), ma con TOQUANTITA’ pari a NULL in quanto una funzione aggregata applicata ad un insieme vuoto restituisce NULL. Come ottenere ZERO invece di NULL?
7
Raggruppamento in SQL Funzione ISNULL: ISNULL(COLONNA,VALORECOSTANTE) se il valore di COLONNA è NULL riporta il valore specificato in VALORECOSTANTE, altrimenti riporta il normale valore di COLONNA
8
I nuovi operatori CUBE e ROLLUP
Riconsideriamo l’esempio (nel seguito useremo GROUP BY senza ALL): E’ possibile ottenere nella stessa query la quantità totale per ciascuna CITTÀ (SETTIMANA)? Occorre raggruppare il risultato della query su CITTA (SETTIMANA) ...
9
Il nuovo operatore CUBE
SELECT ... <come prima> group by CITTA, SETTIMANA with cube Usando l’operatore CUBE nel GROUP BY GROUP BY ... WITH CUBE si includono nuove righe che raggruppano le righe ottenute dal GROUP BY semplice Si usa un nuovo valore polimorfo ALL per rappresentare che il raggruppamento è relativo a tutti i valori della colonna
10
L’operatore CUBE in SQL-SERVER
SQL-Server ha l’operatore CUBE, però non ha il valore ALL: lo rappresenta con “NULL”
11
Funzione aggregata GROUPING
Si può usare solo quando la GROUP BY contiene cube (o rollup) assume il valore 1 se il valore della colonna è NULL e la tupla è generata dall’operatore cube (o rollup): GROUPING(CITTA)=1 se e sole se CITTA=ALL
12
L’operatore CUBE in SQL-SERVER
Utilizzando la funzione GROUPING con il CASE si riesce ad ottenere il risultato voluto
13
L’operatore CUBE in SQL-SERVER
Un altro esempio più semplice
14
Roll-up Su dati multidimensionali, una operazione di Roll-up aggrega i dati eliminando un livello da una gerarchia Cosa succede se l’operatore CUBE è utilizzato in una aggregazione rispetto ai livelli di una gerarchia? Esempio rispetto a MESE e SETTIMANA: Queste righe non hanno senso, in quanto SETTIMANA --> MESE e quindi ad una settimana corrisponde sempre un solo mese!
15
L’operatore ROLLUP in SQL-SERVER
Con GROUP BY COL1,COL2, ... COLn WITH ROLLUP si includono nuove righe che raggruppano le righe del GROUP BY semplice ma per la COLi non si riportano le righe ottenute raggruppando i valori delle colonne sulla sinistra
16
L’operatore ROLLUP in SQL-SERVER
Altro esempio con ROLLUP (applicato ad una sequenza generica, non ad una gerarchia di dimensioni)
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.