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:
Rok | Second Class | Standard Class | First Class | Same Day |
---|---|---|---|---|
2018 | 166 | 518 | 126 | 45 |
2019 | 206 | 633 | 143 | 50 |
2020 | 243 | 774 | 211 | 74 |
2021 | 319 | 965 | 283 | 86 |
2022 | 30 | 104 | 24 | 9 |
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ć, że 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:
Wolisz czytać po angielsku? No problem!
Inne ciekawe 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ż, że 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