SQL kumulativ summa

Sql Kumulativ Summa



I SQL hänvisar en kumulativ summa till en metod som tillåter oss att beräkna den löpande summan av en numerisk kolumn i en databastabell. En kumulativ summa spelar in i en mängd olika scenarier, som att spåra framstegen eller beräkna de rullande medelvärdena för ett givet värde.

I den här handledningen kommer vi att lära oss hur man implementerar och använder den kumulativa summan i SQL med olika metoder och tekniker.







Stickprov

För att bättre förstå hur vi kan implementera och använda den kumulativa summan, låt oss börja med att skapa en grundläggande tabell med exempeldata. Detta gör att vi snabbt och effektivt kan visa hur alla metoder fungerar i det här inlägget.



Börja med att skapa en grundläggande tabell som lagrar produktinformationen.



CREATE TABLE produkter (
product_id INT PRIMÄR NYCKEL,
produktnamn VARCHAR ( 255 ) ,
pris DECIMAL ( 10 , 2 )
) ;





Detta bör skapa en ny tabell som heter 'produkter' som lagrar produkt-id, produktnamn och pris för varje produkt.

Vi kan sedan fortsätta att lägga till exempeldata som visas i följande exempel på infogningssatser:



INSERT INTO produkter ( produkt-id, produktnamn, pris )
VÄRDEN
( 1 , 'Visual Studio Code' , 10.00 ) ,
( 2 , 'Sublim text' , 80.00 ) ,
( 3 , 'PyCharm Professional' , 199.00 ) ,
( 4 , 'Eclipse IDE' , 30.00 ) ,
( 5 , 'IntelliJ IDEA Ultimate' , 699,00 ) ,
( 6 , 'GitHub Desktop' , 20.00 ) ,
( 7 , 'Vänta programvara' , 10.00 ) ,
( 8 , 'Xcode' , 660,00 ) ,
( 9 , 'NetBeans' , 0,00 ) ,
( 10 , 'Atom' , 60,00 ) ;

OBS: De givna uppgifterna är helt fiktiva. Det representerar inte den faktiska prissättningen för någon av de listade objekten.

Den resulterande tabellen är som följer:

SQL kumulativ summa (självanslutning)

En av de tekniker som vi kan använda för att utföra en kumulativ summa på en given kolumn är att använda metoden för självkoppling. En fördel med den här metoden är att den fungerar i nästan alla SQL-databaser även de som inte stöder Window-funktionerna.

Ta till exempel den tidigare 'produkter'-tabellen. Vi kan skapa den kumulativa summan av priskolumnen som visas i följande fråga:

VÄLJ
p1.product_id,
p1.produktnamn,
p1.pris,
BELOPP ( p2.pris ) AS kumulativ_summa
FRÅN
produkter p1
ANSLUTA SIG
produkter p2

p1.produkt-id > = p2.produkt-id
GRUPP AV
p1.product_id,
p1.produktnamn,
p1.pris
SORTERA EFTER
p1.produkt-id;

Har du märkt hur frågan fungerar? Om inte, håll dig till oss när vi förklarar det steg för steg.

I den givna exempelfrågan börjar vi med att skapa två alias – “p1” och “p2” – för tabellen “produkter” som gör att vi kan utföra en självkoppling.

Vi fortsätter sedan med att sammanfoga 'p1' och 'p2' under förutsättning att 'product_id' för 'p1' är större än eller lika med 'product_id' för 'p2'.

I nästa steg anropar vi funktionen sum() som i princip beräknar den kumulativa summan av priserna för varje rad.

Slutligen grupperar vi resultaten med hjälp av 'product_id', 'product_name' och 'price' och beställer resultaten.

Efter denna operation bör vi ha en kumulativ summa för varje post som visas i den resulterande tabellen som visas i följande:

Som du kan se får vi den totala summan av alla föregående rader. Den sista raden ska innehålla den totala summan av alla föregående rader.

SQL kumulativ summa (fönsterfunktioner)

Ett mer effektivt och praktiskt sätt att beräkna den kumulativa summan i SQL är att dra fördel av fönsterfunktionerna närhelst det stöds.

Om du har en databas som SQL Server, PostgreSQL eller MySQL version 8.0 och senare, är detta den mest användbara och rekommenderade metoden för att bestämma den kumulativa summan av en given kolumn.

Ta en titt på exemplet som visas i följande:

VÄLJ
Serienummer,
produktnamn,
pris,
BELOPP ( pris ) ÖVER ( BESTÄLL EFTER produkt-id ) AS kumulativ_summa
FRÅN
Produkter;

I det här fallet börjar vi med att välja kolumnerna 'product_id', 'product_name' och 'price' från tabellen 'products'.

Vi använder sedan SUM()-funktionen som en fönsterfunktion med hjälp av OVER-satsen.

I OVER-satsen specificerar vi ORDER BY-satsen som definierar den ordning i vilken den kumulativa summan beräknas.

Detta bör returnera en liknande utdata som visas i följande:

Du kommer att märka att användningen av fönsterfunktionerna är mer sammanhängande, effektiv och läsbar jämfört med att använda självkopplingar.

Slutsats

I den här handledningen lärde vi oss allt om kumulativa summor i SQL. Vi täckte också hur man använder självkopplingar och fönsterfunktioner för att utföra den kumulativa summan i SQL.