28 Settembre 2022
Expand search form

Cos’è il cubo e il rollup in SQL Server?

Il GRUPPO PER in SQL Server permette di raggruppare le righe di una query. Generalmente, GROUP BY è usato con una funzione aggregata di SQL Server, come SUM, AVG, ecc. Inoltre, il GROUP BY può essere utilizzato anche con componenti opzionali come Cube, Rollup e Grouping Sets. In questo suggerimento, dimostrerò vari modi di costruire un GROUP BY insieme all’output spiegato.

Soluzione

Quando costruiamo le query per i report, usiamo spesso la clausola GROUP BY. Ci sono anche casi in cui avere subtotali e totali come parte dell’output è utile ed è qui che useremo gli operatori opzionali come: CUBE, ROLLUP e GROUPING SETS. Queste opzioni sono simili, ma producono risultati diversi.

Creare il database di esempio di SQL Server e i dati

Per prima cosa, creeremo un database di esempio, una tabella e inseriremo alcuni dati per i nostri esempi.

Ecco i dati che abbiamo appena creato.

Ritorno della tabella di base dalla query

Esempio di SQL Server GROUP BY

Qui sotto c’è una semplice query Group By con la quale si sommano i dati dei salari. Nella prima query, raggruppiamo per Dipartimento e nella seconda query raggruppiamo per Dipartimento e Categoria.

Qui sotto ci sono i risultati. La prima query restituisce 2 righe per reparto con i totali degli stipendi, dato che ci sono 2 reparti. La seconda query restituisce 6 righe per reparto e categoria con i totali degli stipendi, dato che ci sono 2 reparti con 3 categorie in ogni reparto.

Raggruppamento eseguito da

Esempio di SQL Server GROUP BY con HAVING

Nel prossimo esempio, usiamo lo stesso group by, ma limitiamo i dati usando HAVING che filtra i dati. Negli esempi qui sotto, per la prima query vogliamo vedere solo i dipartimenti dove il totale è uguale a 16000 e per la seconda dove il totale di dipartimento e categoria è uguale a 8000.

Qui sotto ci sono solo 2 righe che soddisfano i criteri. Possiamo ricontrollare questo guardando i risultati della prima serie di query di cui sopra.

Raggruppamento eseguito con l'avere

Esempio di SQL Server GROUP BY CUBE

Questo esempio ci permette di mostrare tutte le combinazioni dei dati. Questo include i totali per le combinazioni del gruppo.

I risultati della prima query mostrano i 2 reparti e il totale, ma anche il totale generale per questi 2 reparti. I risultati della seconda interrogazione mostrano tutte le combinazioni di Reparto e Categoria. Per esempio, vediamo IT (reparto) e A (categoria) e 16000 (totale), poi Sales (reparto) e A (categoria) e 7000 (totale) e poi NULL (entrambi i reparti) e A (categoria) e 15000 (totale). Nel grafico, ho suddiviso i diversi raggruppamenti che fanno parte di questa seconda query.

Raggruppamento eseguito con l'operatore del cubo

Esempio di GROUP BY ROLLUP di SQL Server

Questo è simile al Group By Cube, ma vedrete che l’output è leggermente diverso e non si ottengono tante righe per la seconda query.

Possiamo vedere che i risultati della prima query sono gli stessi dell’esempio Group By Rollup, ma la seconda query restituisce solo 9 righe invece delle 12 che abbiamo ottenuto nella query Group By Rollup. La seconda query esegue il rollup prima per reparto e poi per categoria, il che è diverso da Group By Cube che esegue il rollup in entrambe le direzioni. Questo ci permette di ottenere dei subtotali per ogni reparto e un totale complessivo per tutti i reparti.

Eseguire Group By con ROLLUP

Potremmo cambiare la seconda query, come mostrato qui sotto, per rollup prima per Categoria e poi per Reparto.

Possiamo vedere che i risultati della seconda query ora fanno il raggruppamento in base alla Categoria e poi al Reparto. E otteniamo ancora i subtotali e i totali.

Eseguire Group By con ROLLUP

Esempio di SQL Server GROUP BY ROLLUP con GROUPING_ID

Un’altra opzione è quella di usare GROUPING_ID come parte del set di risultati per mostrare ogni gruppo.

Possiamo vedere che abbiamo gli stessi risultati di cui sopra, ma ora abbiamo un valore di raggruppamento per ciascuno di questi gruppi.

Usa Grouping_ID per filtrare il risultato del gruppo

SQL Server GROUP BY GROUPING SETS Esempio

Con i set di raggruppamento, possiamo determinare come vogliamo che i dati siano messi insieme.

Qui sotto possiamo vedere che abbiamo fatto un gruppo per Categoria, un altro gruppo per Dipartimento, un altro gruppo per Categoria e Dipartimento e l’ultimo gruppo per NULL.

Caso d'uso Group By Grouping SETS

Ecco un altro esempio per Dipartimento e Categoria e un gruppo complessivo per NULL.

Caso d'uso Group By Grouping SETS

Potremmo anche fare un ulteriore passo avanti e usare CUBE e ROLLUP per i diversi gruppi di raggruppamento.

Ecco l’output.

Caso d'uso Group By Grouping SETS

Riepilogo

Secondo lo scopo del report per preparare un output riassuntivo, possiamo usare operatori opzionali come CUBE, ROLLUP e GROUPING SETS nella query. GROUPING SETS è un’opzione controllabile e scalabile, quindi preferisco usarla al posto di ROLLUP e CUBE.

Potresti anche essere interessato agli argomenti

Cos’è rollup e CUBE in SQL?

Generalmente CUBE e ROLLUP sono usati per scopi di reporting e fanno il Subtotale e il Gran Totale. CUBE genera un set di risultati che mostra aggregati per tutte le combinazioni di valori nelle colonne selezionate e ROLLUP genera un set di risultati che mostra aggregati per una gerarchia di valori nelle colonne selezionate.Apr 24, 2015

Continua…

Qual è la differenza tra gli operatori CUBE e rollup?

L’operatore ROLLUP genera risultati aggregati per le colonne selezionate in modo gerarchico. D’altra parte, CUBE genera un risultato aggregato che contiene tutte le possibili combinazioni per le colonne selezionate. Qui i dati sono aggregati in modo gerarchico.Nov 30, 2017

Continua…

Cos’è un rollup in SQL?

Il ROLLUP è un’estensione della clausola GROUP BY. L’opzione ROLLUP permette di includere righe extra che rappresentano i subtotali, che sono comunemente chiamati righe super-aggregate, insieme alla riga del totale generale. Utilizzando l’opzione ROLLUP, è possibile utilizzare una singola query per generare più gruppi di raggruppamento.

Continua…

Cos’è il CUBO in SQL?

Un cubo OLAP (Online analytical processing) è una struttura di dati che permette un’analisi veloce dei dati. … I metadati del cubo (struttura) possono essere creati da tabelle in un database relazionale. Le misure sono derivate dai record della tabella dei fatti e le dimensioni sono derivate dalle tabelle delle dimensioni.2 maggio 2011

Continua…

Cos’è il gruppo Cube?

GROUP BY CUBE è un’estensione della clausola GROUP BY simile a GROUP BY ROLLUP. Oltre a produrre tutte le righe di un GROUP BY ROLLUP, GROUP BY CUBE aggiunge tutte le righe delle “tabelle incrociate”. Un raggruppamento CUBE è equivalente a una serie di insiemi di raggruppamenti ed è essenzialmente una specifica più breve.

Continua…

Cosa significa rollup?

: aumentare o acquisire per accumuli successivi: accumulare arrotolato una grande maggioranza. verbo intransitivo. 1 : diventare più grande per accumuli successivi.

Continua…

Perché il cubo è utile in SQL?

Introduzione a SQL CUBE CUBE vi permette di generare subtotali come l’estensione ROLLUP. Inoltre, l’estensione CUBE genererà subtotali per tutte le combinazioni di colonne di raggruppamento specificate nella clausola GROUP BY.

Continua…

A cosa servono i cubi di dati?

Un cubo di dati è generalmente usato per interpretare facilmente i dati. È particolarmente utile quando si rappresentano i dati insieme alle dimensioni come determinate misure dei requisiti aziendali. Ogni dimensione di un cubo rappresenta una certa caratteristica del database, per esempio le vendite giornaliere, mensili o annuali.

Continua…

Perché CUBE è utile in SQL?

Introduzione a SQL CUBE CUBE permette di generare subtotali come l’estensione ROLLUP. Inoltre, l’estensione CUBE genererà subtotali per tutte le combinazioni di colonne di raggruppamento specificate nella clausola GROUP BY.

Continua…

Cos’è il rollup in Oracle SQL?

ROLLUP permette ad un’istruzione SELECT di calcolare più livelli di subtotali attraverso un gruppo specificato di dimensioni. Calcola anche un totale generale. ROLLUP è una semplice estensione della clausola GROUP BY, quindi la sua sintassi è estremamente facile da usare. L’estensione ROLLUP è altamente efficiente, aggiungendo un overhead minimo alla query.

Continua…

Cos’è una strategia di rollup?

Una strategia di rollup è il processo di acquisizione e fusione di più piccole aziende dello stesso settore e il loro consolidamento in una grande azienda.

Continua…

Come si fa un esercizio di roll up?

Esercizio di Roll Up Pilates – Kristi Cooper – YouTube | Tempo – 0:45 [Inglese]

Continua…

Cosa sono i cubi e le dimensioni?

I cubi contengono tutte le dimensioni su cui gli utenti basano le loro analisi dei dati di fatto. Un’istanza di una dimensione del database in un cubo è chiamata dimensione del cubo e si riferisce a uno o più gruppi di misure nel cubo. Una dimensione del database può essere usata più volte in un cubo.Feb 9, 2021

Continua…

Cos’è il cubo di dati?

Un cubo di dati si riferisce a una gamma tridimensionale (3D) (o superiore) di valori che sono generalmente utilizzati per spiegare la sequenza temporale dei dati di un’immagine. È un’astrazione di dati per valutare i dati aggregati da una varietà di punti di vista. … Come tali, i cubi di dati possono andare ben oltre il 3-D per includere molte altre dimensioni.

Continua…

Qual è l’uso del cubo in SQL Server?

Un cubo OLAP, noto anche come cubo multidimensionale o ipercubo, è una struttura di dati in SQL Server Analysis Services (SSAS) che viene costruita, utilizzando i database OLAP, per consentire l’analisi quasi istantanea dei dati.21 agosto 2020

Continua…

Articolo precedente

Perché abbiamo bisogno di muoverci?

Articolo successivo

Qual era il nome dato ai sottomarini tedeschi?

You might be interested in …

I cani possono avere i dread?

Avete mai visto un cane con i dreadlocks e siete stati tentati di rimproverare i loro proprietari per appropriazione culturale, sia del rastafarianesimo, sia della boxe greca antica, sia di quella specie aliena di Predator […]