sql case between podmínky
Potřebujete použít SQL příkaz CASE a nejste si úplně jistí, jak funguje?
Jednoduše se dá vysvětlit jako IF-THEN-ELSE pro SQL. Umožňuje vyhodnocovat podmínky a podle výsledku se rozhodnout, co dál.
Základní syntaxe CASE
není složitá.
Vyzkoušejte si SQL
Všechny příklady z tohoto návodu si můžete vyzkoušet on-line. Pro naše účely bohatě postačí on-line nástroj SQL Fiddle.
Další možností je mít SQL na vašem lokálním PC. Pokud chcete používat SQL bez složité instalace, doporučujeme přehledný návod krok za krokem SQLite - snadný způsob jak začít s SQL.
Vytvořte si tabulku
Zkopírujte následující kód a spusťte ho. Vytvoří se tabulka s testovacími daty.
CREATE TABLE kurzy
(
id INT,
nazev VARCHAR(50),
cena DECIMAL(7,2),
v_prodeji BOOLEAN,
prodano_licenci INT
);
INSERT INTO kurzy VALUES (1, 'SQL základy', 3900, 1, 120);
INSERT INTO kurzy VALUES (2, 'Python úvod', 4100, 1, 140);
INSERT INTO kurzy VALUES (3, 'Excel KT', 3100, 1, 330);
INSERT INTO kurzy VALUES (4, 'Power BI', 3900, 1, 210);
INSERT INTO kurzy VALUES (5, 'Tableau', 4300, 1, 190);
INSERT INTO kurzy VALUES (6, 'Android', 3100, 1, 40);
INSERT INTO kurzy VALUES (7, 'RPA', 3100, 1, 50);
INSERT INTO kurzy VALUES (8, 'Strojové učení', 4800, 1, 30);
INSERT INTO kurzy VALUES (9, 'Základy jógy', 2900, 0, 0);
Začínáme
Nejlépe si vyzkoušíte použití CASE podmínky na příkladech.
Váš kolega chce vědět, jaké kurzy jsou aktuálně v prodeji. Pokud kurz není v prodeji, označíte ho Nelze zakoupit, v opačném případě jako Lze zakoupit.
Tento příklad ukazuje nejednoduší syntaxi CASE
.
SELECT nazev, v_prodeji,
CASE v_prodeji
WHEN 0
THEN 'Nelze zakoupit'
ELSE 'Lze zakoupit'
END AS "V prodeji"
FROM kurzy
;
nazev v_prodeji V prodeji
-------------- ----------- --------------
SQL základy 1 Lze zakoupit
Python úvod 1 Lze zakoupit
Excel KT 1 Lze zakoupit
Power BI 1 Lze zakoupit
Tableau 1 Lze zakoupit
Android 1 Lze zakoupit
RPA 1 Lze zakoupit
Strojové učení 1 Lze zakoupit
Základy jógy 0 Nelze zakoupit
Porovnání ceny
Pokud kurz stojí méně než 3500 Kč, označíte ho jako Do 3500 Kč, pokud více, tak jako Nad 3500 Kč. Nakonec kurzy seřadíte podle relativní ceny a názvu.
Všimněte si drobné změny v syntaxi, kdy cenu porovnáváte hned za klíčovým slovem WHEN
.
SELECT nazev, cena,
CASE WHEN cena < 3500
THEN 'Do 3500 Kč'
ELSE 'Nad 3500 Kč'
END AS "Relativní cena"
FROM kurzy
ORDER BY "Relativní cena",
nazev
;
nazev cena Relativní cena
-------------- ------ ----------------
Android 3100 Do 3500 Kč
Excel KT 3100 Do 3500 Kč
RPA 3100 Do 3500 Kč
Základy jógy 2900 Do 3500 Kč
Power BI 3900 Nad 3500 Kč
Python úvod 4100 Nad 3500 Kč
SQL základy 3900 Nad 3500 Kč
Strojové učení 4800 Nad 3500 Kč
Tableau 4300 Nad 3500 Kč
Kombinace podmínek
Obě výše uvedené podmínky můžete zkombinovat do jednoho SQL příkazu a získat tak všechny informace najednou. Díky tomu nemusíte psát víc příkazů pod sebe.
SELECT nazev,
CASE v_prodeji
WHEN 0
THEN 'Nelze zakoupit'
ELSE 'Lze zakoupit'
END AS "V prodeji",
CASE WHEN cena < 3500
THEN 'Do 3500 Kč'
ELSE 'Nad 3500 Kč'
END AS "Relativní cena"
FROM kurzy
;
nazev V prodeji Relativní cena
-------------- -------------- ----------------
SQL základy Lze zakoupit Nad 3500 Kč
Python úvod Lze zakoupit Nad 3500 Kč
Excel KT Lze zakoupit Do 3500 Kč
Power BI Lze zakoupit Nad 3500 Kč
Tableau Lze zakoupit Nad 3500 Kč
Android Lze zakoupit Do 3500 Kč
RPA Lze zakoupit Do 3500 Kč
Strojové učení Lze zakoupit Nad 3500 Kč
Základy jógy Nelze zakoupit Do 3500 Kč
Složitější podmínky
Praxe samozřejmě přináší komplikovanější případy, kdy s jednoduchými podmínkami nevystačíte. Naštěstí je SQL CASE dobře připraveno i na tyto výzvy.
Kolegyně chce přehledně zobrazit prodejnost kurzů. Pokud se jich prodalo více než 200, zobrazíme hvězdičky. Pokud byl prodej více než 100, dostanou palce nahoru. Méně než 100 znamená obličej bez výrazu. Všechno ostatní je propadák.
SELECT nazev, prodano_licenci,
CASE
WHEN prodano_licenci > 200 THEN '⭐️⭐️⭐️'
WHEN prodano_licenci > 100 THEN '👍👍'
WHEN prodano_licenci BETWEEN 1 AND 100 THEN '😐'
ELSE '💣'
END AS "Prodejnost"
FROM kurzy
ORDER BY prodano_licenci DESC
;
nazev prodano_licenci Prodejnost
------------- --------------- ----------
Excel KT 330 ⭐️⭐️⭐️
Power BI 210 ⭐️⭐️⭐️
Tableau 190 👍👍
Python úvod 140 👍👍
SQL základy 120 👍👍
RPA 50 😐
Android 40 😐
Strojové učení 30 😐
Základy jógy 0 💣
Další kroky
Pokud se chcete naučit využívat SQL, doporučujeme absolvování kurzu SQL pro analytiky, který vám dá potřebné základy. Pokud složíte závěrečný test, obdržíte certifikát, kterým se pak můžete pochlubit třeba v práci.