Somma cumulativa SQL

Somma Cumulativa Sql



In SQL, una somma cumulativa si riferisce a un metodo che ci consente di calcolare il totale parziale di una colonna numerica all'interno di una tabella di database. Una somma cumulativa entra in gioco in un'ampia varietà di scenari, ad esempio nel monitoraggio dei progressi o nel calcolo delle medie mobili di un determinato valore.

In questo tutorial impareremo come implementare e utilizzare la somma cumulativa in SQL utilizzando vari metodi e tecniche.







Dati campione

Per comprendere meglio come possiamo implementare e utilizzare la somma cumulativa, iniziamo creando una tabella di base con dati di esempio. Ciò ci consente di dimostrare il funzionamento di tutti i metodi in modo rapido ed efficiente in questo post.



Inizia creando una tabella di base che memorizzi le informazioni sul prodotto.



Prodotti CREA TAVOLA (
product_id INT CHIAVE PRIMARIA,
nome_prodotto VARCHAR ( 255 ) ,
prezzo DECIMALE ( 10 , 2 )
) ;





Ciò dovrebbe creare una nuova tabella denominata 'prodotti' che memorizza l'ID prodotto, il nome del prodotto e il prezzo di ciascun prodotto.

Possiamo quindi procedere con l'aggiunta di dati di esempio come mostrato nelle seguenti istruzioni di inserimento di esempio:



INSERIRE NEI prodotti ( ID_prodotto, nome_prodotto, prezzo )
VALORI
( 1 , 'Codice di Visual Studio' , 10.00 ) ,
( 2 , 'Testo sublime' , 80,00 ) ,
( 3 , 'PyCharm professionale' , 199,00 ) ,
( 4 , 'IDE Eclissi' , 30.00 ) ,
( 5 , 'IntelliJ IDEA definitivo' , 699,00 ) ,
( 6 , 'Desktop GitHub' , 20.00 ) ,
( 7 , 'Attendi software' , 10.00 ) ,
( 8 , 'Xcodice' , 660,00 ) ,
( 9 , 'NetBean' , 0,00 ) ,
( 10 , 'Atomo' , 60,00 ) ;

NOTA: i dati forniti sono del tutto fittizi. Non rappresenta il prezzo effettivo di nessuno degli articoli elencati.

La tabella risultante è la seguente:

Somma cumulativa SQL (autounione)

Una delle tecniche che possiamo utilizzare per eseguire una somma cumulativa su una determinata colonna è l'utilizzo del metodo self-join. Un vantaggio di questo metodo è che funziona in quasi tutti i database SQL, anche quelli che non supportano le funzioni Window.

Prendiamo ad esempio la precedente tabella “prodotti”. Possiamo creare la somma cumulativa della colonna del prezzo come dimostrato nella seguente query:

SELEZIONARE
p1.id_prodotto,
p1.nome_prodotto,
p1.prezzo,
SOMMA ( p2.prezzo ) AS somma_cumulativa
DA
prodotti p1
GIUNTURA
prodotti p2
SU
p1.id_prodotto > = p2.id_prodotto
RAGGRUPPA PER
p1.id_prodotto,
p1.nome_prodotto,
p1.prezzo
ORDINATO DA
p1.id_prodotto;

Hai notato il funzionamento della query? In caso contrario, resta con noi mentre lo spieghiamo passo dopo passo.

Nella query di esempio fornita, iniziamo creando due alias – “p1” e “p2” – per la tabella “products” che ci consente di eseguire un self-join.

Procediamo quindi ad unire “p1” e “p2” a condizione che il “product_id” di “p1” sia maggiore o uguale al “product_id” di “p2”.

Nel passaggio successivo chiamiamo la funzione sum() che sostanzialmente calcola la somma cumulativa dei prezzi per ogni riga.

Infine, raggruppiamo i risultati utilizzando 'product_id', 'product_name' e 'price' e ordiniamo i risultati.

Dopo questa operazione, dovremmo avere una somma cumulativa per ciascun record, come dimostrato nella tabella risultante, come mostrato di seguito:

Come puoi vedere, otteniamo la somma totale di tutte le righe precedenti. L'ultima riga dovrebbe contenere la somma totale di tutte le righe precedenti.

Somma cumulativa SQL (funzioni finestra)

Un modo più efficiente e pratico per calcolare la somma cumulativa in SQL è sfruttare le funzioni della finestra ogni volta che sono supportate.

Se disponi di un database come SQL Server, PostgreSQL o MySQL versione 8.0 e successive, questo è il metodo più utile e consigliato per determinare la somma cumulativa di una determinata colonna.

Dai un'occhiata all'esempio mostrato di seguito:

SELEZIONARE
Codice prodotto,
nome del prodotto,
prezzo,
SOMMA ( prezzo ) SOPRA ( ORDINA PER product_id ) AS somma_cumulativa
DA
prodotti;

In questo caso, iniziamo selezionando le colonne “product_id”, “product_name” e “price” dalla tabella “products”.

Utilizziamo quindi la funzione SUM() come funzione finestra utilizzando la clausola OVER.

Nella clausola OVER specifichiamo la clausola ORDER BY che definisce l'ordine in cui viene calcolata la somma cumulativa.

Questo dovrebbe restituire un output simile come mostrato di seguito:

Noterai che l'utilizzo delle funzioni della finestra è più coerente, efficiente e leggibile rispetto all'utilizzo dei self-join.

Conclusione

In questo tutorial, abbiamo imparato tutto sulle somme cumulative in SQL. Abbiamo anche spiegato come utilizzare i self-join e le funzioni window per eseguire la somma cumulativa in SQL.