SQL Academy · Oppitunti

BETWEEN vaihteluväleille

Käyttäkää BETWEEN-operaattoria sulkeisiin luku- ja päivämääräväleihin sekä tietäkää, milloin puoliksi avoimille väleille kannattaa käyttää eksplisiittisiä >=- ja <-vertailuja.

Oppitunti 3/413 vaihetta

BETWEEN vaihteluväleille on ilmainen SQL Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu SQL Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. SQL Academy-kurssilla on yhteensä 4 oppituntia.

BETWEEN sisältää päätepisteet

BETWEEN a AND b täsmäyttää arvot, joille x >= a AND x <= b. Molemmat päätepisteet ovat mukana.

SELECT * FROM orders WHERE total BETWEEN 100 AND 500;
-- equivalent to:
SELECT * FROM orders WHERE total >= 100 AND total <= 500;

Päivämääräalueet

BETWEEN toimii myös päivämäärien ja aikaleimojen kanssa:

SELECT * FROM orders
WHERE created_at BETWEEN '2024-01-01' AND '2024-12-31';

Mukaan lukevien päätepisteiden sudenkuoppa

Kun käytätte TIMESTAMP-saraketta, BETWEEN '2024-12-31' päättyy 31. päivän keskiyöllä, EI päivän lopussa. 31. joulukuuta kello 14.00 tehdyt tilaukset jäävät pois.

-- WRONG — misses orders later on Dec 31:
WHERE created_at BETWEEN '2024-12-01' AND '2024-12-31';

-- RIGHT — half-open interval:
WHERE created_at >= '2024-12-01'
  AND created_at <  '2025-01-01';

Suosikaa ajan puoliavoimia välejä

Puoliavoin malli >= start AND < next_period on yksiselitteinen, toimii millä tahansa tarkkuudella ja ketjuuntuu luontevasti peräkkäisille ajanjaksoille.

WHERE created_at >= date_trunc('month', NOW())
  AND created_at <  date_trunc('month', NOW()) + INTERVAL '1 month';

NOT BETWEEN

BETWEEN-lausekkeen käänteinen muoto — sulkee alueen pois:

SELECT * FROM products WHERE price NOT BETWEEN 10 AND 20;
-- equivalent to: price < 10 OR price > 20

Aluehaut ja indeksit

B-tree-indeksi auttaa aluehauissa. Yhdistelmäindekseissä alueen määrittävä sarake kannattaa sijoittaa viimeiseksi parhaan selektiivisyyden saavuttamiseksi:

CREATE INDEX orders_user_total_idx ON orders (user_id, total);

-- Efficient: equality on user_id, range on total
SELECT * FROM orders
WHERE user_id = 42 AND total BETWEEN 100 AND 500;

Merkkijonot ja BETWEEN

BETWEEN vertaa merkkijonoja leksikografisesti. Huomioikaa kirjainkoko:

SELECT * FROM users WHERE last_name BETWEEN 'A' AND 'C';
-- Includes 'Adams' and 'Bond', excludes 'C' itself only if 'C' < 'Ca...'

Aluetyypit (PostgreSQL)

PostgreSQL sisältää erityiset aluetyypit puoliavoimia välejä varten:

SELECT int4range(10, 20) @> 15;       -- true  (15 in [10,20))
SELECT tsrange('2024-01-01', '2025-01-01') @> NOW()::TIMESTAMP;

Alueiden tarkistaminen CHECK-ehdolla

Varmistakaa, että start <= end lisäyshetkellä:

CREATE TABLE bookings (
  id BIGSERIAL PRIMARY KEY,
  start_at TIMESTAMPTZ NOT NULL,
  end_at   TIMESTAMPTZ NOT NULL,
  CHECK (start_at < end_at)
);

Numeerinen ryhmittely

Yhdistäkää BETWEEN ja CASE ryhmittelyluokkien muodostamiseksi:

SELECT id, total,
  CASE
    WHEN total BETWEEN 0 AND 99    THEN 'small'
    WHEN total BETWEEN 100 AND 999 THEN 'medium'
    ELSE 'large'
  END AS bucket
FROM orders;

BETWEEN SYMMETRIC

SQL-standardin laajennus, joka ei välitä siitä, kumpi arvoista on pienempi:

SELECT 5 BETWEEN SYMMETRIC 10 AND 1;   -- TRUE

Kertaus

BETWEEN on kätevä lyhyt muoto mukaan lukeville alue-ehdoille.

  • Varokaa aikaleimojen päätepisteitä — suosikaa puoliavointa muotoa >= start AND < end
  • Yhdistelmäindeksit nopeuttavat aluehakuja
  • CHECK-rajoitteet varmistavat alueiden kelvollisuuden

Pikatarkistus

Sisältyvätkö molemmat lausekkeen BETWEEN a AND b päätepisteet standardin mukaiseen SQL:ään?

Aloita maksutta

Opi SQL tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
46
Oppitunnit
183

Usein kysytyt kysymykset

Onko oppitunti ”BETWEEN vaihteluväleille” ilmainen?

Kyllä – oppitunnin ”BETWEEN vaihteluväleille” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko SQL Academy-kurssin, päivitä CoddyKit PROhon. SQL Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”BETWEEN vaihteluväleille”?

Käyttäkää BETWEEN-operaattoria sulkeisiin luku- ja päivämääräväleihin sekä tietäkää, milloin puoliksi avoimille väleille kannattaa käyttää eksplisiittisiä >=- ja <-vertailuja. Harjoittelet SQL Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni SQL Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin SQL Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”BETWEEN vaihteluväleille”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä SQL Academy-oppitunnilla?

Kyllä. Jokainen SQL Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. LIKE-kuviot ja jokerimerkit
  2. IN ja NOT IN joukoille
  3. BETWEEN vaihteluväleille
  4. IS NULL, IS NOT NULL ja COALESCE
← Takaisin: SQL Academy