SQL kumulativ sum

Sql Kumulativ Sum



I SQL refererer en kumulativ sum til en metode som lar oss beregne den løpende summen av en numerisk kolonne i en databasetabell. En kumulativ sum kommer inn i en lang rekke scenarier, for eksempel sporing av fremdriften eller beregning av rullende gjennomsnitt for en gitt verdi.

I denne opplæringen lærer vi hvordan du implementerer og bruker den kumulative summen i SQL ved hjelp av ulike metoder og teknikker.







Eksempeldata

For bedre å forstå hvordan vi kan implementere og bruke den kumulative summen, la oss starte med å sette opp en grunnleggende tabell med eksempeldata. Dette lar oss demonstrere funksjonene til alle metodene raskt og effektivt i dette innlegget.



Start med å lage en grunnleggende tabell som lagrer produktinformasjonen.



CREATE TABLE-produkter (
product_id INT PRIMÆR NØKKEL,
produktnavn VARCHAR ( 255 ) ,
pris DESIMAL ( 10 , 2 )
) ;





Dette bør lage en ny tabell kalt 'produkter' som lagrer produkt-ID, produktnavn og prisen på hvert produkt.

Vi kan deretter fortsette å legge til et eksempeldata som vist i følgende eksempelinnsettingssetninger:



INSERT INTO produkter ( produkt-id, produktnavn, pris )
VERDIER
( 1 , 'Visual Studio Code' , 10.00 ) ,
( 2 , 'Sublim tekst' , 80,00 ) ,
( 3 , 'PyCharm Professional' , 199,00 ) ,
( 4 , 'Eclipse IDE' , 30.00 ) ,
( 5 , 'IntelliJ IDEA Ultimate' , 699,00 ) ,
( 6 , 'GitHub Desktop' , 20.00 ) ,
( 7 , 'Ventprogramvare' , 10.00 ) ,
( 8 , 'Xcode' , 660,00 ) ,
( 9 , 'NetBeans' , 0,00 ) ,
( 10 , 'Atom' , 60,00 ) ;

MERK: Oppgitte data er fullstendig fiktive. Den representerer ikke den faktiske prisen på noen av de oppførte varene.

Den resulterende tabellen er som følger:

SQL kumulativ sum (selv sammenføyning)

En av teknikkene vi kan bruke for å utføre en kumulativ sum på en gitt kolonne er å bruke selvsammenføyningsmetoden. En fordel med denne metoden er at den fungerer i nesten alle SQL-databaser, selv de som ikke støtter Window-funksjonene.

Ta for eksempel den forrige 'produkter'-tabellen. Vi kan lage den kumulative summen av priskolonnen som vist i følgende spørring:

PLUKKE UT
p1.product_id,
p1.produktnavn,
p1.pris,
SUM ( p2.pris ) AS kumulativ_sum
FRA
produkter p1
BLI MED
produkter p2

p1.product_id > = p2.produkt-id
GRUPPE AV
p1.product_id,
p1.produktnavn,
p1.pris
REKKEFØLGE ETTER
p1.produkt-id;

La du merke til hvordan søket virket? Hvis ikke, hold deg til oss mens vi forklarer det trinn for trinn.

I den gitte eksempelspørringen starter vi med å lage to aliaser - 'p1' og 'p2' - for 'produkter'-tabellen som gjør oss i stand til å utføre en selvkobling.

Vi fortsetter deretter med å slå sammen 'p1' og 'p2' under forutsetning av at 'product_id' til 'p1' er større enn eller lik 'product_id' til 'p2'.

I neste trinn kaller vi sum()-funksjonen som i utgangspunktet beregner den kumulative summen av prisene for hver rad.

Til slutt grupperer vi resultatene ved å bruke «product_id», «product_name» og «price» og bestiller resultatene.

Etter denne operasjonen bør vi ha en kumulativ sum for hver post som vist i den resulterende tabellen som vist i følgende:

Som du kan se, får vi den totale summen av alle de foregående radene. Den siste raden skal inneholde den totale summen av alle de foregående radene.

SQL kumulativ sum (vindusfunksjoner)

En mer effektiv og praktisk måte å beregne den kumulative summen i SQL er å dra nytte av vindusfunksjonene når det støttes.

Hvis du har en database som SQL Server, PostgreSQL eller MySQL versjon 8.0 og nyere, er dette den mest nyttige og anbefalte metoden for å bestemme den kumulative summen av en gitt kolonne.

Ta en titt på eksemplet som vist i følgende:

PLUKKE UT
Produkt ID,
Produktnavn,
pris,
SUM ( pris ) OVER ( BESTILL ETTER product_id ) AS kumulativ_sum
FRA
Produkter;

I dette tilfellet starter vi med å velge «product_id», «product_name» og «price»-kolonnene fra «products»-tabellen.

Vi bruker deretter SUM()-funksjonen som en vindusfunksjon ved å bruke OVER-leddet.

I OVER-leddet spesifiserer vi ORDER BY-leddet som definerer rekkefølgen som den kumulative summen beregnes i.

Dette skal returnere en lignende utgang som vist i følgende:

Du vil legge merke til at bruk av vindusfunksjonene er mer sammenhengende, effektiv og lesbar sammenlignet med å bruke selvsammenføyninger.

Konklusjon

I denne opplæringen lærte vi alt om kumulative summer i SQL. Vi dekket også hvordan du bruker selvkoblingene og vindusfunksjonene for å utføre den kumulative summen i SQL.