
W SQL istnieje wiele konstrukcji, które pozwalają na manipulację danymi oraz ich sprawną analizę. Jednym z najczęściej używanych narzędzi do wykonywania warunkowych operacji w zapytaniach SQL jest CASE WHEN
. Jest to instrukcja warunkowa, która pozwala zwracać różne wartości w zależności od spełnienia określonych warunków. Dzięki niej możemy dynamicznie przekształcać dane i dostosowywać wyniki do własnych potrzeb.
Podstawowa składnia CASE WHEN
Instrukcja CASE WHEN
działa na zasadzie „jeśli warunek jest spełniony, zwróć wartość A, w przeciwnym razie zwróć wartość B”. Oto jej podstawowa składnia:
CASE
WHEN warunek1 THEN wynik1
WHEN warunek2 THEN wynik2
...
ELSE wynik_domyslny
END
Opcjonalne ELSE
określa wartość, która zostanie zwrócona, jeśli żaden z warunków nie zostanie spełniony. Jeśli go pominiemy i nie zajdzie żaden z warunków, wynik będzie NULL
.
Przykłady zastosowania CASE WHEN
1. Kategoryzowanie danych
Załóżmy, że mamy tabelę pracownicy
zawierającą kolumnę pensja
, a naszym zadaniem jest przypisanie każdego pracownika do jednej z trzech kategorii: „Niska”, „Średnia” lub „Wysoka”. Możemy to zrobić w następujący sposób:
SELECT imie, nazwisko, pensja,
CASE
WHEN pensja < 3000 THEN 'Niska'
WHEN pensja BETWEEN 3000 AND 7000 THEN 'Średnia'
ELSE 'Wysoka'
END AS kategoria_pensji
FROM pracownicy;
Wynik takiego zapytania może wyglądać następująco:
imie | nazwisko | pensja | kategoria_pensji |
---|---|---|---|
Jan | Kowalski | 2500 | Niska |
Anna | Nowak | 5000 | Średnia |
Piotr | Wiśniewski | 8000 | Wysoka |
2. Obsługa wartości NULL
Jeśli w naszej bazie danych znajdują się wartości NULL
, możemy je w prosty sposób zastąpić domyślną wartością, np.:
SELECT imie, nazwisko,
CASE
WHEN telefon IS NULL THEN 'Brak numeru'
ELSE telefon
END AS numer_telefonu
FROM pracownicy;
Dzięki temu w wynikach zapytania zamiast pustych wartości pojawi się tekst „Brak numeru”.
3. Użycie w klauzuli ORDER BY
Instrukcja CASE WHEN
może być również używana do niestandardowego sortowania. Jeśli chcemy, aby pracownicy z wysokimi zarobkami pojawili się na początku, możemy napisać:
SELECT imie, nazwisko, pensja
FROM pracownicy
ORDER BY
CASE
WHEN pensja > 7000 THEN 1
WHEN pensja BETWEEN 3000 AND 7000 THEN 2
ELSE 3
END;
4. Zastosowanie w agregacji
Możemy również użyć CASE WHEN
w połączeniu z funkcjami agregującymi, np. aby policzyć ilu pracowników zarabia w poszczególnych przedziałach:
SELECT
CASE
WHEN pensja < 3000 THEN 'Niska'
WHEN pensja BETWEEN 3000 AND 7000 THEN 'Średnia'
ELSE 'Wysoka'
END AS kategoria_pensji,
COUNT(*) AS liczba_pracownikow
FROM pracownicy
GROUP BY
CASE
WHEN pensja < 3000 THEN 'Niska'
WHEN pensja BETWEEN 3000 AND 7000 THEN 'Średnia'
ELSE 'Wysoka'
END;
Najczęstsze błędy przy używaniu CASE WHEN
Podczas korzystania z CASE WHEN
można napotkać kilka typowych błędów:
- Brak klauzuli ELSE – jeśli wszystkie warunki zwrócą wynik negatywny, wynik będzie
NULL
, co może prowadzić do nieoczekiwanych rezultatów. - Nieprzewidziane typy danych – zwracane wartości w każdej gałęzi instrukcji
CASE
powinny być tego samego typu (np. wszystkie tekstowe albo wszystkie liczbowe). - Nadmierne zagnieżdżanie – zbyt skomplikowane warunki mogą sprawić, że kod stanie się trudny do utrzymania. Warto wtedy rozważyć inne podejście.
Podsumowanie
Instrukcja CASE WHEN
to niezwykle potężne narzędzie w języku SQL, które pozwala na elastyczne manipulowanie danymi. Możemy jej używać w instrukcjach SELECT
, ORDER BY
, GROUP BY
oraz w warunkach agregacji. Dzięki niej możemy kategoryzować dane, obsługiwać wartości NULL
czy dynamicznie modyfikować sposób prezentacji wyników.
Dobrze opanowanie CASE WHEN
pozwala na bardziej efektywne i czytelne zapytania, które ułatwiają codzienną pracę z bazami danych. Warto więc eksperymentować i dostosowywać tę instrukcję do własnych potrzeb.
Inny ciekawy artykuł:
Jak działa EXCEPT w języku SQL? Przykłady zastosowania
Opanuj SQL z moim kursem!
Poznasz zarówno podstawy, jak i zaawansowane zapytania analityczne (CTE, subqueries, window functions). Nauczysz się pracować na różnych silnikach – na kursie pracujemy zarówno na MySQL, jak i na Postgres. Wszystko zainstalujemy na Twoim komputerze, plus dostaniesz mnóstwo zestawów danych do ćwiczeń.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.