Przypadek SQL z klauzulą ​​Sum i Group By

Przypadek Sql Z Klauzula Sum I Group By



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.