SQL Case na may Sum at Group By Clause

Sql Case Na May Sum At Group By Clause



Sa tutorial na ito, matututunan natin kung paano gamitin ang CASE statement na may function na SUM at isang sugnay na GROUP BY.

Ang tutorial na ito ay hindi sumasaklaw sa mga batayan ng pagtatrabaho sa alinman sa SQL Case statement, ang sum() function, o ang GROUP BY clause. Kung hinahanap mo ang mga pangunahing kaalaman ng mga tampok na ito ng SQL, tingnan ang aming mga tutorial sa mga paksa upang matuklasan pa.







Problema:

Sabihin nating mayroon kaming table na pinangalanang 'mga order' at gusto naming makuha ang kabuuang benta para sa bawat customer na naka-grupo ayon sa customer ID, ngunit gusto rin naming magkalkula ng diskwento para sa mga customer na naglagay ng higit sa dalawang order.



Ang talahanayan ay ipinapakita sa sumusunod:



GUMAWA ng mga order ng TABLE (
order_id INT PRIMARY KEY,
customer_id INT,
product_id INT,
order_date DATE,
dami INT,
DECIMAL ang presyo ( 10 , 2 )
) ;


Magpasok ng sample na data sa talahanayan tulad ng ipinapakita sa sumusunod:





INSERT IN TO orders ( order_id, customer_id, product_id, order_date, dami, presyo )
MGA HALAGA
( 1 , 101 , 1 , '2022-04-01' , 2 , 10.99 ) ,
( 2 , 102 , 2 , '2022-04-01' , 1 , 19.99 ) ,
( 3 , 103 , 1 , '2022-04-02' , 3 , 8.99 ) ,
( 4 , 101 , 3 , '2022-04-03' , 2 , 15.99 ) ,
( 5 , 102 , 1 , '2022-04-03' , 1 , 12.99 ) ,
( 6 , 104 , 2 , '2022-04-04' , 4 , 7.99 ) ,
( 7 , 103 , 3 , '2022-04-05' , 2 , 21.99 ) ,
( 8 , 101 , 2 , '2022-04-06' , 1 , 18.99 ) ,
( 9 , 104 , 1 , '2022-04-07' , 2 , 9.99 ) ,
( 10 , 102 , 3 , '2022-04-07' , 3 , 14.99 ) ;


Dapat itong lumikha ng isang talahanayan tulad ng sumusunod:



SQL Case na may Sum at Group By Clause

Upang makuha ang kabuuang benta para sa bawat customer na nakapangkat ayon sa ID at kalkulahin ang diskwento para sa mga customer na naglagay ng higit sa dalawang order, maaari naming gamitin ang CASE statement kasabay ng SUM at GROUP BY clause gaya ng ipinapakita sa sumusunod:

pumili orders.customer_id, sum ( orders.dami * mga order.presyo * ( kaso kapag binibilang ( * ) > 2 pagkatapos 0.9 iba pa 1 wakas ) ) bilang kabuuang_benta mula sa mga order;


Sa ibinigay na halimbawa, ginagamit namin ang SQL CASE statement upang suriin kung ang customer ay naglagay ng higit sa dalawang order.

Kung ang isang customer ay naglagay ng higit sa dalawang order, i-multiply namin ang total_sales sa 0.9 na nalalapat ng 10% na diskwento.

Konklusyon

Tinalakay namin kung paano namin magagamit ang SQL CASE statement na may SUM() at GROUP BY clause.