SQL Cumulative Sum

Sql Cumulative Sum



Sa SQL, ang pinagsama-samang kabuuan ay tumutukoy sa isang paraan na nagbibigay-daan sa amin na kalkulahin ang kabuuang tumatakbo ng isang numeric na column sa loob ng isang talahanayan ng database. Ang isang pinagsama-samang kabuuan ay naglalaro sa isang malawak na iba't ibang mga sitwasyon tulad ng pagsubaybay sa pag-unlad o pagkalkula ng mga rolling average ng isang naibigay na halaga.

Sa tutorial na ito, matututunan natin kung paano ipatupad at gamitin ang pinagsama-samang kabuuan sa SQL gamit ang iba't ibang pamamaraan at diskarte.







Sample na data

Upang mas maunawaan kung paano natin maipapatupad at magagamit ang pinagsama-samang kabuuan, magsimula tayo sa pamamagitan ng pag-set up ng pangunahing talahanayan na may sample na data. Ito ay nagbibigay-daan sa amin upang ipakita ang mga gumagana ng lahat ng mga pamamaraan nang mabilis at mahusay sa post na ito.



Magsimula sa pamamagitan ng paglikha ng isang pangunahing talahanayan na nag-iimbak ng impormasyon ng produkto.



GUMAWA ng mga produkto ng TABLE (
product_id INT PRIMARY KEY,
product_name VARCHAR ( 255 ) ,
DECIMAL ang presyo ( 10 , 2 )
) ;





Dapat itong lumikha ng isang bagong talahanayan na tinatawag na 'mga produkto' na nag-iimbak ng id ng produkto, ang pangalan ng produkto, at ang presyo ng bawat produkto.

Pagkatapos ay maaari tayong magpatuloy upang magdagdag ng sample na data tulad ng ipinapakita sa sumusunod na halimbawa ng mga insert statement:



INSERT IN TO products ( product_id, product_name, presyo )
MGA HALAGA
( 1 , 'Visual Studio Code' , 10.00 ) ,
( 2 , 'Sublime 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 , 'Wait Software' , 10.00 ) ,
( 8 , 'Xcode' , 660.00 ) ,
( 9 , 'NetBeans' , 0.00 ) ,
( 10 , 'Atom' , 60.00 ) ;

TANDAAN: Ang ibinigay na data ay ganap na kathang-isip. Hindi nito kinakatawan ang aktwal na pagpepresyo ng alinman sa mga nakalistang item.

Ang resultang talahanayan ay ang mga sumusunod:

SQL Cumulative Sum (Self Join)

Ang isa sa mga diskarte na magagamit namin upang magsagawa ng pinagsama-samang kabuuan sa isang partikular na column ay ang paggamit ng self-join method. Ang isang bentahe ng pamamaraang ito ay gumagana ito sa halos lahat ng mga database ng SQL kahit na ang mga hindi sumusuporta sa mga function ng Window.

Kunin halimbawa ang nakaraang talahanayan ng 'mga produkto'. Maaari tayong lumikha ng pinagsama-samang kabuuan ng column ng presyo gaya ng ipinakita sa sumusunod na query:

PUMILI
p1.product_id,
p1.product_name,
p1.presyo,
SUM ( p2.presyo ) AS cumulative_sum
MULA SA
mga produkto p1
SUMALI
mga produkto p2
NAKA-ON
p1.product_id > = p2.product_id
GROUP BY
p1.product_id,
p1.product_name,
p1.presyo
INIUTOS NI
p1.product_id;

Napansin mo ba ang paggana ng query? Kung hindi, manatili sa amin habang ipinapaliwanag namin ito nang sunud-sunod.

Sa ibinigay na halimbawang query, magsisimula kami sa pamamagitan ng paglikha ng dalawang alias - 'p1' at 'p2' - para sa talahanayan ng 'mga produkto' na nagbibigay-daan sa amin na magsagawa ng self-join.

Magpapatuloy kami sa pagsali sa “p1” at “p2” sa kondisyon na ang “product_id” ng “p1” ay mas malaki o katumbas ng “product_id” ng “p2”.

Sa susunod na hakbang, tinatawag namin ang sum() function na karaniwang kinakalkula ang pinagsama-samang kabuuan ng mga presyo para sa bawat hilera.

Panghuli, pinapangkat namin ang mga resulta gamit ang 'product_id', 'product_name', at 'price' at inoorder ang mga resulta.

Pagkatapos ng operasyong ito, dapat tayong magkaroon ng pinagsama-samang kabuuan para sa bawat talaan tulad ng ipinakita sa resultang talahanayan tulad ng ipinapakita sa sumusunod:

Tulad ng nakikita mo, nakukuha namin ang kabuuang kabuuan ng lahat ng nakaraang mga hilera. Ang huling row ay dapat maglaman ng kabuuang kabuuan ng lahat ng nakaraang row.

SQL Cumulative Sum (Mga Function ng Window)

Ang isang mas mahusay at praktikal na paraan ng pagkalkula ng pinagsama-samang kabuuan sa SQL ay sinasamantala ang mga function ng window sa tuwing ito ay sinusuportahan.

Kung mayroon kang database gaya ng SQL Server, PostgreSQL, o MySQL bersyon 8.0 at mas mataas, ito ang pinakakapaki-pakinabang at inirerekomendang paraan para sa pagtukoy ng pinagsama-samang kabuuan ng isang naibigay na column.

Tingnan ang halimbawa tulad ng ipinakita sa sumusunod:

PUMILI
product_id,
pangalan ng Produkto,
presyo,
SUM ( presyo ) TAPOS ( ORDER NG product_id ) AS cumulative_sum
MULA SA
mga produkto;

Sa kasong ito, magsisimula tayo sa pamamagitan ng pagpili sa mga column na 'product_id', 'product_name', at 'price' mula sa table na 'products.'

Pagkatapos ay gagamitin namin ang SUM() function bilang isang window function gamit ang OVER clause.

Sa OVER clause, tinukoy namin ang ORDER BY clause na tumutukoy sa pagkakasunud-sunod kung saan kinakalkula ang pinagsama-samang kabuuan.

Dapat itong magbalik ng katulad na output tulad ng ipinapakita sa sumusunod:

Mapapansin mo na ang paggamit ng mga function ng window ay mas magkakaugnay, mahusay, at nababasa kumpara sa paggamit ng mga self-join.

Konklusyon

Sa tutorial na ito, natutunan namin ang lahat tungkol sa pinagsama-samang mga kabuuan sa SQL. Sinasaklaw din namin kung paano gamitin ang mga self-join at mga function ng window upang maisagawa ang pinagsama-samang kabuuan sa SQL.