
SQL — BETWEEN
SQL operátor BETWEEN porovnává, zda-li je výraz v rozmezí hodnot low a high.
Poznámka: Pokud nemáte na svém počítač nainstalovaný žádný SQL server - jako např. PostgreSQL, MySQL, MS SQL Server, apod. - můžete využít SQL Online, které je on-line a zdarma. Pro vytvoření dat použijte vzorek z datové sady titanic.
CREATE TABLE "titanic" (
"pclass" INTEGER,
"class" VARCHAR(10),
"who" VARCHAR(10),
"age" DECIMAL(5,2)
);
INSERT INTO "titanic" VALUES(2,'Second','man',36.5);
INSERT INTO "titanic" VALUES(3,'Third','child',9.0);
INSERT INTO "titanic" VALUES(2,'Second','man',51.0);
INSERT INTO "titanic" VALUES(2,'Second','woman',30.0);
INSERT INTO "titanic" VALUES(1,'First','man',33.0);
INSERT INTO "titanic" VALUES(1,'First','man',58.0);
INSERT INTO "titanic" VALUES(2,'Second','woman',30.0);
INSERT INTO "titanic" VALUES(1,'First','man',22.0);
INSERT INTO "titanic" VALUES(3,'Third','child',11.0);
INSERT INTO "titanic" VALUES(3,'Third','child',0.42);
INSERT INTO "titanic" VALUES(3,'Third','child',1.0);
INSERT INTO "titanic" VALUES(3,'Third','man',24.0);
INSERT INTO "titanic" VALUES(3,'Third','man',NULL);
INSERT INTO "titanic" VALUES(1,'First','man',70.0);
INSERT INTO "titanic" VALUES(3,'Third','man',34.0);
INSERT INTO "titanic" VALUES(1,'First','man',30.0);
INSERT INTO "titanic" VALUES(3,'Third','child',11.0);
INSERT INTO "titanic" VALUES(2,'Second','man',32.0);
INSERT INTO "titanic" VALUES(3,'Third','man',NULL);
INSERT INTO "titanic" VALUES(3,'Third','woman',NULL);
Věk je mezi 30 - 34
Hledáme pasažéry, kterým bylo mezi 30 až 34 lety, včetně okrajových hodnot.
SELECT *
FROM titanic
WHERE age BETWEEN 30 AND 34
;
pclass class who age
---------------------------
2 Second woman 30
1 First man 33
2 Second woman 30
3 Third man 34
1 First man 30
2 Second man 32
Stejný příklad bez použití BETWEEN
Výše uvedený SQL příkaz by se dal i přepsat následovně. Nevýhodou je trochu horší čitelnost ve srovnání s BETWEEN.
SELECT *
FROM titanic
WHERE age >= 30
AND age <= 34
;
pclass class who age
---------------------------
2 Second woman 30
1 First man 33
2 Second woman 30
3 Third man 34
1 First man 30
2 Second man 32
Alternativní zápis podmínky
Nebo také takto, ale BETWEEN stále vyhrává, protože je nejčitelnější.
SELECT *
FROM titanic
WHERE 30 <= age
AND age <= 34
;
pclass class who age
---------------------------
2 Second woman 30
1 First man 33
2 Second woman 30
3 Third man 34
1 First man 30
2 Second man 32
Věk není mezi 30 - 34
Podmínku můžeme snadno negovat pomocí NOT. Všimněte si, že výsledek neobsahuje záznamy, které mají ve sloupci age hodnotu NULL.
SELECT *
FROM titanic
WHERE age NOT BETWEEN 30 AND 34
;
pclass class who age
----------------------------
2 Second man 36.5
3 Third child 9
2 Second man 51
1 First man 58
1 First man 22
3 Third child 11
3 Third child 0.42
3 Third child 1
3 Third man 24
1 First man 70
3 Third child 11
Ověření vrácených hodnot pomocí DISTINCT
Pomocí DISTINCT můžeme ověřit, že se ve vrácených hodnotách nenachází 30, 31, 32, 33 a 34. Hodnoty si seřadíme pomocí ORDER BY, pro lepší čitelnost.
SELECT DISTINCT AGE
FROM titanic
WHERE age NOT BETWEEN 30 AND 34
ORDER BY age
;
age
----
0.42
1
9
11
22
24
36.5
51
58
70
Příklady
Příklad 1
Kolika pasažérům bylo mezi 50 - 70 lety a cestovali v první třídě?
SELECT COUNT(*) AS "počet"
FROM titanic
WHERE age BETWEEN 50 AND 70
AND pclass = 1
;
počet
-----
2
Příklad 2
Titanic se potopil v roce 1912. Kterým pasažérům by dnes bylo mezi 144,5 - 160 lety?
SELECT *
FROM titanic
WHERE age + (2020 - 1912) BETWEEN 144.5 AND 160
;
pclass class who age
------------------------
2 Second man 36.5
2 Second man 51
Použité funkce a příkazy SQL
V tomto článku jsme použili následující funkce a příkazy SQL:
| Funkce | Info |
|---|---|
BETWEEN | porovnává, zda-li je výraz v rozmezí hodnot — dokumentace SQL |
NOT | Negace výrazu — dokumentace SQL. |
DISTINCT | Unikátní hodnoty (odstraní duplicity) — dokumentace SQL. |
ORDER BY | Seřadí výsledek — dokumentace SQL. |
Mohlo by vás zajímat
Blog

Brzdí vás Excel? Vlastní datové aplikace rychle a bez programátorů.

Jak vytváříme jednoúčelové aplikace s pomocí AI

Aritmetický průměr vs. medián
Data Apps

Lineární kalendář

Kouzelný odstraňovač pozadí

Převod textu na řeč
Kurzy

Data Analytics Pass

SQL pro analytiky

Programování ve VBA

Základy Tableau

Vizualizace dat v Canvě


