Caz SQL cu clauza Sum și Group By

Caz Sql Cu Clauza Sum Si Group By



În acest tutorial, vom învăța cum să folosim instrucțiunea CASE cu funcția SUM și o clauză GROUP BY.

Acest tutorial nu acoperă elementele fundamentale ale lucrului cu instrucțiunile SQL Case, cu funcția sum() sau cu clauza GROUP BY. Dacă căutați elementele de bază ale acestor caracteristici SQL, consultați tutorialele noastre despre subiecte pentru a afla mai multe.







Problemă:

Să presupunem că avem un tabel numit „comenzi” și dorim să obținem vânzările totale pentru fiecare client care este grupat după ID-ul clientului, dar dorim și să calculăm o reducere pentru clienții care au plasat mai mult de două comenzi.



Tabelul este prezentat în cele ce urmează:



CREAȚI COMANDE TABLE (
order_id INT PRIMARY KEY,
customer_id INT,
product_id INT,
order_date DATE,
cantitate INT,
pret DECIMAL ( 10 , 2 )
) ;


Introduceți un eșantion de date în tabel, așa cum se arată în continuare:





INSERT INTO comenzi ( id_comandă, cod_client, cod_produs, data_comandă, cantitate, preț )
VALORI
( 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 , „06-04-2022” , 1 , 18.99 ) ,
( 9 , 104 , 1 , '2022-04-07' , 2 , 9,99 ) ,
( 10 , 102 , 3 , '2022-04-07' , 3 , 14.99 ) ;


Aceasta ar trebui să creeze un tabel după cum urmează:



Caz SQL cu clauza Sum și Group By

Pentru a obține vânzările totale pentru fiecare client care este grupat după ID și pentru a calcula reducerea pentru clienții care au plasat mai mult de două comenzi, putem folosi declarația CASE împreună cu clauza SUM și GROUP BY, așa cum se arată în continuare:

Selectați orders.customer_id, sumă ( comenzi.cantitate * comenzi.pret * ( caz când numără ( * ) > 2 apoi 0,9 altfel 1 Sfârşit ) ) la fel de total_vânzări din comenzi;


În exemplul dat, folosim instrucțiunea SQL CASE pentru a verifica dacă clientul a plasat mai mult de două comenzi.

Dacă un client a plasat mai mult de două comenzi, înmulțim total_sales cu 0,9 care aplică o reducere de 10%.

Concluzie

Am discutat despre cum putem folosi instrucțiunea SQL CASE cu clauza SUM() și GROUP BY.