Caso SQL con la clausola Sum e Group By

Caso Sql Con La Clausola Sum E Group By



In questo tutorial impareremo come utilizzare l'istruzione CASE con la funzione SUM e una clausola GROUP BY.

Questa esercitazione non copre i fondamenti dell'utilizzo dell'istruzione SQL Case, della funzione sum() o della clausola GROUP BY. Se stai cercando le basi di queste funzionalità SQL, controlla i nostri tutorial sugli argomenti per scoprire di più.







Problema:

Diciamo che abbiamo una tabella denominata 'ordini' e desideriamo ottenere le vendite totali per ogni cliente raggruppato per ID cliente, ma vogliamo anche calcolare uno sconto per i clienti che hanno effettuato più di due ordini.



La tabella è riportata di seguito:



CREA ordini TABELLA (
order_id INT CHIAVE PRIMARIA,
ID_cliente INT,
id_prodotto INT,
ordine_data DATA,
quantità INT,
prezzo DECIMALE ( 10 , 2 )
) ;


Inserisci i dati di esempio nella tabella come mostrato di seguito:





INSERIRE NEGLI ordini ( order_id, customer_id, product_id, order_date, quantità, prezzo )
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 , '2022-04-06' , 1 , 18.99 ) ,
( 9 , 104 , 1 , '2022-04-07' , 2 , 9,99 ) ,
( 10 , 102 , 3 , '2022-04-07' , 3 , 14.99 ) ;


Questo dovrebbe creare una tabella come segue:



Caso SQL con la clausola Sum e Group By

Per recuperare le vendite totali per ogni cliente raggruppato per ID e calcolare lo sconto per i clienti che hanno effettuato più di due ordini, possiamo utilizzare l'istruzione CASE in combinazione con la clausola SUM e GROUP BY come mostrato di seguito:

Selezionare ordini.customer_id, somma ( ordini.quantità * ordini.prezzo * ( caso quando contare ( * ) > 2 Poi 0.9 altro 1 FINE ) ) COME totale_vendite da ordini;


Nell'esempio fornito, utilizziamo l'istruzione SQL CASE per verificare se il cliente ha effettuato più di due ordini.

Se un cliente ha effettuato più di due ordini, moltiplichiamo il total_sales per 0,9 che applica uno sconto del 10%.

Conclusione

Abbiamo discusso di come utilizzare l'istruzione SQL CASE con la clausola SUM() e GROUP BY.