SQL kaupiamoji suma

Sql Kaupiamoji Suma



SQL kalboje kaupiamoji suma reiškia metodą, leidžiantį apskaičiuoti visą einamąją skaičių stulpelio duomenų bazės lentelėje. Sukaupta suma naudojama įvairiuose scenarijuose, pvz., stebint pažangą arba apskaičiuojant tam tikros vertės slenkamuosius vidurkius.

Šioje pamokoje išmoksime įdiegti ir panaudoti kaupiamąją sumą SQL naudojant įvairius metodus ir metodus.







Duomenų pavyzdžiai

Norėdami geriau suprasti, kaip galime įdiegti ir naudoti kaupiamąją sumą, pradėkime nuo pagrindinės lentelės su pavyzdiniais duomenimis sudarymo. Tai leidžia mums greitai ir efektyviai parodyti visų metodų veikimą šiame įraše.



Pradėkite kurdami pagrindinę lentelę, kurioje saugoma produkto informacija.



CREATE TABLE produktus (
product_id INT PRIMARY KEY,
produkto_pavadinimas VARCHAR ( 255 ) ,
kaina DECIMAL ( 10 , 2 )
) ;





Tai turėtų sukurti naują lentelę pavadinimu „produktai“, kurioje saugomas produkto ID, produkto pavadinimas ir kiekvieno produkto kaina.

Tada galime pridėti duomenų pavyzdį, kaip parodyta toliau pateiktuose pavyzdiniuose įterpimo teiginiuose:



INSERT INTO produktus ( produkto_id, produkto_pavadinimas, kaina )
VERTYBĖS
( 1 , „Visual Studio Code“ , 10.00 val ) ,
( 2 , „Pakilnus tekstas“ , 80.00 ) ,
( 3 , „PyCharm Professional“ , 199.00 ) ,
( 4 , „Eclipse IDE“ , 30.00 val ) ,
( 5 , „IntelliJ IDEA Ultimate“ , 699,00 ) ,
( 6 , „GitHub Desktop“ , 20.00 val ) ,
( 7 , „Palauk programinė įranga“ , 10.00 val ) ,
( 8 , 'Xcode' , 660,00 ) ,
( 9 , „NetBeans“ , 0.00 ) ,
( 10 , 'Atomas' , 60.00 ) ;

PASTABA: pateikti duomenys yra visiškai išgalvoti. Tai neatspindi tikrosios nė vienos iš išvardytų prekių kainos.

Gauta lentelė yra tokia:

SQL kaupiamoji suma (savarankiškas prisijungimas)

Vienas iš būdų, kurį galime naudoti, norėdami apskaičiuoti kaupiamąją sumą tam tikrame stulpelyje, yra savaiminio sujungimo metodas. Vienas iš šio metodo pranašumų yra tai, kad jis veikia beveik visose SQL duomenų bazėse, net ir tose, kurios nepalaiko lango funkcijų.

Paimkite, pavyzdžiui, ankstesnę „produktų“ lentelę. Galime sukurti suminę kainos stulpelio sumą, kaip parodyta šioje užklausoje:

PASIRINKTI
p1.product_id,
p1.product_name,
p1.kaina,
SUMA ( p2.kaina ) AS kumuliacinė_suma
NUO
produktai p1
PRISIJUNK
produktai p2
ĮJUNGTA
p1.product_id > = p2.produkto_id
GRUPUOTI PAGAL
p1.product_id,
p1.product_name,
p1.kaina
RŪŠIUOTI PAGAL
p1.product_id;

Ar pastebėjote užklausos veikimą? Jei ne, pasilikite su mumis, kaip paaiškinsime žingsnis po žingsnio.

Pateiktoje užklausos pavyzdyje pradedame sukurti du slapyvardžius – „p1“ ir „p2“ – „produktų“ lentelei, kuri leidžia atlikti savarankišką sujungimą.

Tada pereiname prie „p1“ ir „p2“ sujungimo su sąlyga, kad „p1“ „product_id“ yra didesnis arba lygus „p2“ produkto_id.

Kitame žingsnyje iškviečiame funkciją sum(), kuri iš esmės apskaičiuoja suminę kiekvienos eilutės kainų sumą.

Galiausiai sugrupuojame rezultatus naudodami „product_id“, „product_name“ ir „price“ ir užsakome rezultatus.

Po šios operacijos turėtume turėti kiekvieno įrašo suminę sumą, kaip parodyta gautoje lentelėje, kaip parodyta toliau:

Kaip matote, gauname bendrą visų ankstesnių eilučių sumą. Paskutinėje eilutėje turi būti nurodyta bendra visų ankstesnių eilučių suma.

SQL kaupiamoji suma (lango funkcijos)

Veiksmingesnis ir praktiškesnis būdas apskaičiuoti kaupiamą sumą SQL yra pasinaudoti lango funkcijomis, kai tik ji palaikoma.

Jei turite duomenų bazę, pvz., SQL Server, PostgreSQL arba MySQL 8.0 ir naujesnę versiją, tai yra naudingiausias ir rekomenduotinas būdas nustatyti konkretaus stulpelio kaupiamą sumą.

Pažvelkite į pavyzdį, kaip parodyta toliau:

PASIRINKTI
produkto_id,
produkto pavadinimas,
kaina,
SUMA ( kaina ) BAIGTA ( UŽSAKYTI PAGAL produkto_id ) AS kumuliacinė_suma
NUO
Produktai;

Tokiu atveju pradedame nuo lentelės „products“ pasirinkdami stulpelius „product_id“, „product_name“ ir „price“.

Tada funkciją SUM() naudojame kaip lango funkciją, naudodami OVER sąlygą.

OVER sakinyje nurodome ORDER BY sąlygą, kuri apibrėžia kumuliacinės sumos apskaičiavimo tvarką.

Tai turėtų grąžinti panašią išvestį, kaip parodyta toliau:

Pastebėsite, kad lango funkcijų naudojimas yra nuoseklesnis, efektyvesnis ir skaitomesnis, palyginti su savarankišku sujungimu.

Išvada

Šioje pamokoje sužinojome viską apie kaupiamas sumas SQL. Taip pat aptarėme, kaip naudoti savarankiškus sujungimus ir langų funkcijas, kad būtų galima atlikti kaupiamąją sumą SQL.