SQL-juhtum summa ja rühmita klausliga

Sql Juhtum Summa Ja Ruhmita Klausliga



Selles õpetuses õpime kasutama lauset CASE koos funktsiooniga SUM ja klausliga GROUP BY.

See õpetus ei hõlma SQL Case lause, funktsiooni sum() ega GROUP BY klausliga töötamise põhialuseid. Kui otsite nende SQL-i funktsioonide põhitõdesid, vaadake meie nende teemade õpetusi, et rohkem teada saada.







Probleem:

Oletame, et meil on tabel nimega 'tellimused' ja soovime saada iga kliendi kogumüügi, kes on rühmitatud kliendi ID järgi, kuid tahame arvutada ka allahindluse klientidele, kes on esitanud rohkem kui kaks tellimust.



Tabel on näidatud järgmiselt:



LOO TABEL tellimusi (
order_id INT PRIMARY KEY,
customer_id INT,
product_id INT,
order_date DATE,
kogus INT,
hind KOMMAL ( 10 , 2 )
) ;


Sisestage näidisandmed tabelisse, nagu on näidatud järgmiselt:





SISESTAGE tellimustesse ( tellimuse_id, kliendi_id, toote_id, tellimuse_kuupäev, kogus, hind )
VÄÄRTUSED
( 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 ) ;


See peaks looma järgmise tabeli:



SQL-juhtum summa ja rühmita klausliga

Iga ID alusel rühmitatud kliendi kogumüügi hankimiseks ja allahindluse arvutamiseks klientidele, kes on esitanud rohkem kui kaks tellimust, saame kasutada avaldust CASE koos klausliga SUM ja GROUP BY, nagu on näidatud järgmiselt:

vali orders.customer_id, summa ( tellimused.kogus * tellimused.hind * ( juhtum kui arvestada ( * ) > 2 siis 0.9 muidu 1 lõpp ) ) nagu kogu_müük tellimustest;


Antud näites kasutame SQL CASE lauset kontrollimaks, kas klient on esitanud rohkem kui kaks tellimust.

Kui klient on esitanud rohkem kui kaks tellimust, korrutame müügi kogusumma 0,9-ga, mis annab 10% allahindluse.

Järeldus

Arutasime, kuidas saame kasutada SQL CASE-lauset koos klausliga SUM() ja GROUP BY.