La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Raggruppamento in SQL Esempio di raggruppamento È possibile dare un nome alle colonne tramite AS.

Presentazioni simili


Presentazione sul tema: "1 Raggruppamento in SQL Esempio di raggruppamento È possibile dare un nome alle colonne tramite AS."— Transcript della presentazione:

1 1 Raggruppamento in SQL Esempio di raggruppamento È possibile dare un nome alle colonne tramite AS

2 2 Raggruppamento in SQL Un altro esempio

3 3 Le funzioni aggregate non si possono innestare Nell’esempio non possiamo calcolare la media dei totali, perchè non possiamo scrivere avg(sum(QUANTITA)) Raggruppamento in SQL

4 4 Le funzioni aggregate non si possono innestare: si può fare il calcolo in più passi usando le viste Nell’esempio Raggruppamento in SQL

5 5 Il GROUP BY riporta solo le combinazioni presenti Come ottenere anche che la combinazione (MI,GEN1) con TOQUANTITA’ pari a zero?

6 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 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 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 9 Il nuovo operatore 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 SELECT... group by CITTA, SETTIMANA with cube

10 10 SQL-Server ha l’operatore CUBE, però non ha il valore ALL: lo rappresenta con “NULL” L’operatore CUBE in SQL-SERVER

11 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 12 Utilizzando la funzione GROUPING con il CASE si riesce ad ottenere il risultato voluto L’operatore CUBE in SQL-SERVER

13 13 Un altro esempio più semplice L’operatore CUBE in SQL-SERVER

14 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 15 ConGROUP 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 L’operatore ROLLUP in SQL-SERVER

16 16 Altro esempio con ROLLUP (applicato ad una sequenza generica, non ad una gerarchia di dimensioni) L’operatore ROLLUP in SQL-SERVER


Scaricare ppt "1 Raggruppamento in SQL Esempio di raggruppamento È possibile dare un nome alle colonne tramite AS."

Presentazioni simili


Annunci Google