SQL cumulatieve som

Sql Cumulatieve Som



In SQL verwijst een cumulatieve som naar een methode waarmee we het lopende totaal van een numerieke kolom binnen een databasetabel kunnen berekenen. Een cumulatief bedrag speelt een rol in een grote verscheidenheid aan scenario's, zoals het volgen van de voortgang of het berekenen van de voortschrijdende gemiddelden van een bepaalde waarde.

In deze zelfstudie leren we hoe we de cumulatieve som in SQL kunnen implementeren en gebruiken met behulp van verschillende methoden en technieken.







Voorbeeldgegevens

Om beter te begrijpen hoe we de cumulatieve som kunnen implementeren en gebruiken, gaan we beginnen met het opzetten van een basistabel met voorbeeldgegevens. Hierdoor kunnen we in dit bericht de werking van alle methoden snel en efficiënt demonstreren.



Begin met het maken van een basistabel waarin de productinformatie wordt opgeslagen.



CREATE TABLE-producten (
product_id INT PRIMAIRE SLEUTEL,
productnaam VARCHAR ( 255 ) ,
prijs DECIMAAL ( 10 , 2 )
) ;





Dit zou een nieuwe tabel moeten creëren met de naam “producten” waarin de product-ID, de productnaam en de prijs van elk product worden opgeslagen.

We kunnen dan doorgaan met het toevoegen van voorbeeldgegevens, zoals weergegeven in de volgende voorbeeldinsert-instructies:



PLAATS IN producten ( product_id, productnaam, prijs )
WAARDEN
( 1 , 'Visuele studiocode' , 10.00 uur ) ,
( 2 , 'Sublieme tekst' , 80.00 uur ) ,
( 3 , 'PyCharm-professional' , 199,00 ) ,
( 4 , 'Eclipse-IDE' , 30.00 uur ) ,
( 5 , 'IntelliJ IDEA Ultimate' , 699,00 ) ,
( 6 , 'GitHub-bureaublad' , 20.00 uur ) ,
( 7 , 'Wachtsoftware' , 10.00 uur ) ,
( 8 , 'Xcode' , 660,00 ) ,
( 9 , 'NetBeans' , 0,00 ) ,
( 10 , 'Atoom' , 60.00 uur ) ;

OPMERKING: De gegeven gegevens zijn volledig fictief. Het vertegenwoordigt niet de werkelijke prijs van een van de vermelde artikelen.

De resulterende tabel is als volgt:

Cumulatieve som van SQL (self-join)

Een van de technieken die we kunnen gebruiken om een ​​cumulatieve som op een bepaalde kolom uit te voeren, is het gebruik van de self-join-methode. Een voordeel van deze methode is dat deze in vrijwel alle SQL-databases werkt, zelfs in databases die de Window-functies niet ondersteunen.

Neem bijvoorbeeld de vorige tabel “producten”. We kunnen de cumulatieve som van de prijskolom maken, zoals blijkt uit de volgende query:

SELECTEER
p1.product_id,
p1.productnaam,
p1.prijs,
SOM ( p2.prijs ) AS cumulatieve_som
VAN
producten p1
MEEDOEN
producten p2
OP
p1.product_id > = p2.product_id
GROEP DOOR
p1.product_id,
p1.productnaam,
p1.prijs
BESTEL DOOR
p1.product_id;

Heb je de werking van de query opgemerkt? Zo niet, blijf bij ons, want we leggen het stap voor stap uit.

In de gegeven voorbeeldquery beginnen we met het maken van twee aliassen – “p1” en “p2” – voor de tabel “products”, waardoor we een self-join kunnen uitvoeren.

Vervolgens gaan we verder met het samenvoegen van “p1” en “p2” op voorwaarde dat de “product_id” van “p1” groter is dan of gelijk is aan de “product_id” van “p2”.

In de volgende stap roepen we de functie sum() aan, die in principe de cumulatieve som van de prijzen voor elke rij berekent.

Ten slotte groeperen we de resultaten met behulp van de “product_id”, “product_name” en “price” en ordenen we de resultaten.

Na deze bewerking zouden we voor elke record een cumulatief bedrag moeten hebben, zoals blijkt uit de resulterende tabel, zoals hieronder weergegeven:

Zoals je kunt zien, krijgen we de totale som van alle voorgaande rijen. De laatste rij moet de totale som van alle voorgaande rijen bevatten.

SQL cumulatieve som (vensterfuncties)

Een efficiëntere en praktischere manier om de cumulatieve som in SQL te berekenen, is door gebruik te maken van de vensterfuncties wanneer deze worden ondersteund.

Als u een database heeft zoals SQL Server, PostgreSQL of MySQL versie 8.0 en hoger, is dit de nuttigste en meest aanbevolen methode om de cumulatieve som van een bepaalde kolom te bepalen.

Bekijk het voorbeeld zoals hieronder wordt gedemonstreerd:

SELECTEER
Product-ID,
productnaam,
prijs,
SOM ( prijs ) OVER ( BESTEL OP product_id ) AS cumulatieve_som
VAN
producten;

In dit geval beginnen we met het selecteren van de kolommen “product_id”, “product_name” en “price” uit de tabel “products”.

Vervolgens gebruiken we de functie SUM() als vensterfunctie met behulp van de OVER-clausule.

In de OVER-clausule specificeren we de ORDER BY-clausule, die de volgorde definieert waarin de cumulatieve som wordt berekend.

Dit zou een vergelijkbare uitvoer moeten retourneren, zoals weergegeven in het volgende:

U zult merken dat het gebruik van de vensterfuncties coherenter, efficiënter en leesbaarder is dan het gebruik van self-joins.

Conclusie

In deze tutorial hebben we alles geleerd over cumulatieve bedragen in SQL. We hebben ook besproken hoe u de functies voor self-joins en vensters kunt gebruiken om de cumulatieve som in SQL uit te voeren.