W tym samouczku nauczymy się, jak używać instrukcji CASE z funkcją SUMA i klauzulą GROUP BY.
Ten samouczek nie obejmuje podstaw pracy z instrukcją SQL Case, funkcją sum() ani klauzulą GROUP BY. Jeśli szukasz podstaw tych funkcji SQL, sprawdź nasze samouczki dotyczące tematów, aby dowiedzieć się więcej.
Problem:
Załóżmy, że mamy tabelę o nazwie „zamówienia” i chcemy uzyskać łączną sprzedaż dla każdego klienta, który jest pogrupowany według identyfikatora klienta, ale chcemy również obliczyć rabat dla klientów, którzy złożyli więcej niż dwa zamówienia.
Tabela jest pokazana w następujący sposób:
UTWÓRZ zamówienia TABELI (
order_id INT KLUCZ PODSTAWOWY,
identyfikator_klienta INT,
identyfikator_produktu INT,
data_zamówienia DATA,
ilość INT,
cena DZIESIĘTNA ( 10 , 2 )
) ;
Wstaw przykładowe dane do tabeli, jak pokazano poniżej:
WSTAW DO ZAMÓWIEŃ ( identyfikator_zamówienia, identyfikator_klienta, identyfikator_produktu, data_zamówienia, ilość, cena )
WARTOŚCI
( 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 ) ;
To powinno utworzyć tabelę w następujący sposób:
Przypadek SQL z klauzulą Sum i Group By
Aby pobrać łączną sprzedaż dla każdego klienta pogrupowanego według identyfikatora i obliczyć rabat dla klientów, którzy złożyli więcej niż dwa zamówienia, możemy użyć instrukcji CASE w połączeniu z klauzulami SUMA i GROUP BY, jak pokazano poniżej:
wybierać zamówienia.identyfikator_klienta, suma ( zamówienia.ilość * zamówienia.cena * ( sprawa kiedy liczyć ( * ) > 2 Następnie 0,9 w przeciwnym razie 1 koniec ) ) Jak suma_sprzedaży z zamówień;
W podanym przykładzie używamy instrukcji SQL CASE, aby sprawdzić, czy klient złożył więcej niż dwa zamówienia.
Jeśli klient złożył więcej niż dwa zamówienia, mnożymy wartość total_sales przez 0,9, co daje 10% rabatu.
Wniosek
Omówiliśmy, jak możemy użyć instrukcji SQL CASE z klauzulą SUM() i GROUP BY.