Prosta Tabela Przestawna w SQL + Obsługa NULL w CASE WHEN

kajodata.com 2 tygodni temu

Tabele przestawne to jedno z ulubionych narzędzi analityków korzystających z Excela. Ale co zrobić, gdy dane znajdują się w bazie SQL? Czy da się stworzyć coś podobnego w SQL, aby analizować dane w układzie krzyżowym? Odpowiedź brzmi: tak! W tym artykule pokażę, jak przy pomocy GROUP BY oraz CASE WHEN zbudować prostą tabelę przestawną w SQL.

1. Wstęp – o co chodzi z tabelą przestawną w SQL?

Tabele przestawne umożliwiają analizę danych w układzie, gdzie jedna oś przedstawia kategorie, a druga np. lata lub inne wymiary. W naszym przypadku chcemy policzyć liczbę zamówień dla różnych metod dostawy (Shipping Mode) w poszczególnych latach (Order Year).

2. Wyodrębnianie kategorii – unikalne wartości Shipping Mode

Pierwszym krokiem jest sprawdzenie, jakie mamy dostępne kategorie w kolumnie Shipping Mode. Wykorzystujemy do tego prostą komendę:

SELECT DISTINCT shipping_mode FROM orders;

Wynik to lista metod dostawy, takich jak:

  • Second Class
  • Standard Class
  • First Class
  • Same Day

3. Tworzenie tabeli przestawnej – zastosowanie CASE WHEN

Kolejnym krokiem jest policzenie liczby zamówień dla każdej kategorii dostawy w podziale na lata. Używamy GROUP BY oraz konstrukcji CASE WHEN, aby każda metoda dostawy była osobną kolumną:

SELECT YEAR(order_date) AS order_year, COUNT(CASE WHEN shipping_mode = 'Second Class' THEN order_id END) AS second_class, COUNT(CASE WHEN shipping_mode = 'Standard Class' THEN order_id END) AS standard_class, COUNT(CASE WHEN shipping_mode = 'First Class' THEN order_id END) AS first_class, COUNT(CASE WHEN shipping_mode = 'Same Day' THEN order_id END) AS same_day FROM orders GROUP BY order_year ORDER BY order_year;

4. Wynik – analiza zamówień według lat i metod dostawy

Po wykonaniu zapytania otrzymujemy tabelę, która wygląda jak klasyczna tabela przestawna. Przykładowe dane mogą wyglądać następująco:

RokSecond ClassStandard ClassFirst ClassSame Day
201816651812645
201920663314350
202024377421174
202131996528386
202230104249

Każda kolumna odpowiada liczbie zamówień złożonych w danym roku dla wybranej metody dostawy. Możemy w prosty sposób przeanalizować trendy w zamówieniach.

5. Obsługa NULL w CASE WHEN

Warto wspomnieć, iż w SQL wartość NULL nie jest liczona w funkcji COUNT. Dlatego nie musimy definiować ELSE NULL w CASE WHEN. Dzięki temu liczymy tylko zamówienia, które spełniają warunek, np. shipping_mode = 'Second Class'.

6. Podsumowanie

Tabele przestawne w SQL nie są tak trudne, jak się wydaje. Dzięki GROUP BY i CASE WHEN możemy łatwo analizować dane w układzie krzyżowym. Ten prosty przykład pokazuje, jak w kilku krokach stworzyć dynamiczną analizę, która dostarcza cennych informacji.

Jeśli ten przykład Ci się spodobał, koniecznie sprawdź moje inne materiały, gdzie omawiam bardziej zaawansowane funkcje SQL, a także pokazuję, jak efektywnie analizować dane w Excelu, Pythonie czy Tableau!

Najlepsze kursy z analizy danych – Excel, SQL, Python i więcej – znajdziesz u mnie na:

kajodata.com/kursy

Wolisz czytać po angielsku? No problem!

Inne interesujące artykuły:

  • Tworzenie histogramu w SQL – praktyczne podejście z subquery, CTE i CASE WHEN
  • Czyszczenie danych (Data Cleaning) – 5 kroków do czystych danych
  • Błędy w CV – jak pisać CV, by zdobyć wymarzoną pracę
  • Brak pracy dla juniorów – jak zostać analitykiem danych?
  • 9 błędów na LinkedIn, które niszczą Twoje szanse na znalezienie pracy

To tyle w tym temacie. Analizujcie w pokoju!

Podobał Ci się ten artykuł 🙂?
Podziel się nim w Social Mediach 📱
>>> udostępnij go na LinkedIn i pokaż, iż codziennie uczysz się czegoś nowego
>>> wrzuć go na Facebooka, to się może przydać któremuś z Twoich znajomych
>>> Przypnij sobie tą stronkę to zakładek, może się przydać w przyszłości

Wolisz oglądać 📺 niż czytać – nie ma problemu
>>> Obserwuj i oglądaj KajoData na YouTube

Idź do oryginalnego materiału