[Sql Server] GROUPING SETS, ROLLUP e CUBE

lunedì 05 novembre 2012 - 16.14

Gemini Profilo | Expert

Ciao a tutti
sto studiando sql server e studiando le aggregazioni ho trovato queste 3 iscrizioni: GROUPING SETS, ROLLUP e CUBE.
Dal libro su cui sto studiando e da msdn non ci ho capito molto.
Qualcuno può spiegarmi in modo semplice come funzionano e quando utilizzarli?
Grazie mille

alx_81 Profilo | Guru

>Ciao a tutti
ciao

>sto studiando sql server e studiando le aggregazioni ho trovato
>queste 3 iscrizioni: GROUPING SETS, ROLLUP e CUBE.
>Dal libro su cui sto studiando e da msdn non ci ho capito molto.
>Qualcuno può spiegarmi in modo semplice come funzionano e quando utilizzarli?
sono tipi di raggruppamento, e il loro utilizzo dipende dai casi reali (ad esempio calcoli su totali e subtotali)
ROLLUP: definendo le colonne in questo operatore, ipotizzando tre colonne C1, C2 e C3, si ottiene un resultset che torna il risultato della select raggruppato per:
- C1 e C2 e C3
- C1 e C2
- C1

CUBE: definendo le colonne in questo operatore, ipotizzando tre colonne C1, C2 e C3, si ottiene un resultset che torna il risultato della select raggruppato per tutte le possibili combinazioni delle colonne.

GROUPING SETS: definendo le colonne in questo operatore, ipotizzando tre colonne C1, C2 e C3, si ottiene un resultset che torna il risultato della select raggruppato per ogni colonna:
- C1, NULL, NULL
- NULL, C2, NULL
- NULL, NULL, C3

ognuna di queste "righe" che si vengono a creare (diverse per ogni valore delle colonne) torna l'aggregazione (ad esempio una sum) che hai definito nella select. Quindi dipende dalle tue esigenze. Ad esempio, per il primo caso, pensa ad una query che torna una sorta di gerarchia vendite:
STATO --> AREA --> CITTA', usando ROLLUP e ipotizzando di avere una SUM(Venduto) in una select che la consuma otterrai un risultato tipo:

STATO | AREA | CITTA' | VENDUTO
--------------------------------------------
ITALIA | NORD | PARMA | 10000€
ITALIA | NORD | MILANO | 10000€
ITALIA | SUD | ROMA | 50000€
ITALIA | SUD | NAPOLI | 30000€
ITALIA | SUD | NULL | 80000€ (50+30mila)
ITALIA | NORD | NULL | 20000€ (10+10mila)
ITALIA | NULL | NULL | 100000€ (80+20mila)
NULL | NULL | NULL | 100000€

>Grazie mille
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

Gemini Profilo | Expert

Perfetto!
E GROUPING SETS quando si utilizza?
Ancora grazie

alx_81 Profilo | Guru

>Perfetto!
>E GROUPING SETS quando si utilizza?
quando vuoi raggruppare per diversi set.. è molto potente, alla fine con quelle tre colonne potresti anche raggruppare per:
C1 e C2, C3, C2 solamente, ecc..
puoi proprio scegliere il set di raggruppamento.

>Ancora grazie
se ti ha aiutato ti chiedo di accettare la risposta così chiudiamo il post.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5