Rozsahy: BETWEEN

Rozsahy jako cena >= 399 AND cena <= 499 jsou tak běžné, že pro ně SQL má kratší zápis, BETWEEN … AND … (mezi … a …):

SELECT nazev, cena
FROM hry
WHERE cena BETWEEN 399 AND 499
ORDER BY cena, nazev;
nazevcena
Bakery Story399
Ocean Deep399
Pixel Racer399
Lost Temple499
Moon Farm499

Oba konce do rozsahu patří: ve výsledku jsou hry za 399 i za 499 Kč. cena BETWEEN 399 AND 499 znamená přesně cena >= 399 AND cena <= 499, jen je to kratší a lépe se to čte. Slovo AND je tu součástí BETWEEN, nespojuje dvě podmínky.

BETWEEN funguje i s daty, protože se jako text porovnávají správně. Objednávky z léta 2024, od 1. června do 31. srpna:

SELECT id, datum
FROM objednavky
WHERE datum BETWEEN '2024-06-01' AND '2024-08-31'
ORDER BY datum;
iddatum
72024-06-01
82024-06-18
92024-07-07
102024-08-23

Objednávka 7 z 1. června ve výsledku je: první i poslední den do rozsahu patří. (Kdyby data obsahovala i čas, poslední den by ve výsledku zase chyběl, jak jste viděli v minulém cvičení: '2024-08-31 18:30' je větší než '2024-08-31'. U takových dat použijte >= a < s dalším dnem.)

NOT BETWEEN najde hodnoty mimo rozsah. Hry levnější než 200 Kč nebo dražší než 1 500 Kč:

SELECT nazev, cena
FROM hry
WHERE cena NOT BETWEEN 200 AND 1500
ORDER BY cena;
nazevcena
Cube Logic129
Knight's Oath1599

Typická chyba: větší hodnota jako první. cena BETWEEN 499 AND 399 není chyba, ale nenajde nic: žádná cena není zároveň aspoň 499 a nejvýš 399. Menší hodnota je vždycky první, a u dat ta dřívější.

Pokyny

Ukažte název a cenu her, které stojí od 649 do 899 Kč, obě hranice včetně. Použijte BETWEEN a hry seřaďte podle ceny a pak podle názvu. Výsledek začíná takto:

nazevcena
Mystery Manor649
Shadow Ninja649
Tiny Kingdoms649
Castle Siege799
……

Pod tím ukažte ID a datum objednávek z prosince 2024, od 1. do 31. prosince, od nejstarší:

iddatum
132024-12-05
142024-12-20
152024-12-23

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

8/12