SQL-työhaastatteluun valmistautuminen · Oppitunti

CASE-lausekkeet SELECTissä

Kirjoita upotettua ehdollista logiikkaa ja tutustu haetun ja yksinkertaisen CASE-lausekkeen muotoihin

Oppitunti 4/413 vaihetta

CASE-lausekkeet SELECTissä on ilmainen SQL-työhaastatteluun valmistautuminen-oppitunti CoddyKitissä. Tämä on oppitunti 4/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-työhaastatteluun valmistautuminen-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. SQL-työhaastatteluun valmistautuminen-kurssilla on yhteensä 4 oppituntia.

CASE: SQL:n ehtolauseke

CASE vastaa SQL:n if/then/else-rakennetta, mutta se on yhden arvon palauttava lauseke — joten sitä voi käyttää kaikkialla, missä arvoa voidaan käyttää: SELECT-, WHERE- ja ORDER BY -lausekkeissa sekä aggregaattifunktioiden sisällä.

SELECT order_id,
       amount,
       CASE WHEN amount > 100 THEN 'large' ELSE 'small' END AS size
FROM orders;

Searched CASE -muoto

Searched CASE tarkistaa kunkin WHEN-haaran loogisen ehdon ja palauttaa ensimmäisen täsmäävän tuloksen. Se on joustavin muoto, ja järjestyksellä on merkitystä — ensimmäinen tosi ehto voittaa.

SELECT score,
       CASE
         WHEN score >= 90 THEN 'A'
         WHEN score >= 80 THEN 'B'
         WHEN score >= 70 THEN 'C'
         ELSE 'F'
       END AS grade
FROM exam_results;

Simple CASE -muoto

Simple CASE vertaa yhtä lauseketta arvoluetteloon. Se on lyhyempi yhtäsuuruusvertailuissa, mutta sillä ei voi käsitellä arvoalueita tai NULL-tarkistuksia.

SELECT status_code,
       CASE status_code
         WHEN 1 THEN 'active'
         WHEN 2 THEN 'paused'
         WHEN 3 THEN 'closed'
         ELSE 'unknown'
       END AS status_label
FROM accounts;

Searched CASE vai Simple CASE: milloin kumpaakin käytetään

Käyttäkää simple CASE -muotoa vertailtaessa arvoa kiinteisiin arvoihin ja searched CASE -muotoa arvoalueille tai NULL-arvoille. Tärkeä sudenkuoppa: simple CASE ei voi koskaan täsmätä NULL-arvoon — käyttäkää searched-muodossa IS NULL -ehtoa.

-- Simple CASE will NOT catch NULL here
SELECT CASE WHEN bonus IS NULL THEN 'no bonus'
            ELSE 'has bonus'
       END AS bonus_flag
FROM employees;

WHEN-haarojen järjestyksellä on merkitystä

Koska ensimmäinen täsmäävä haara voittaa, järjestäkää WHEN-ehdot tarkimmasta yleisimpään. Jos asetatte väljän rajaehdon ensin, pistemäärä 95 voidaan luokitella väärin.

-- Correct order: highest threshold first
SELECT CASE
         WHEN score >= 90 THEN 'A'
         WHEN score >= 80 THEN 'B'
         ELSE 'C or below'
       END AS grade
FROM exam_results;

ELSE ja implisiittinen NULL

Jos mikään ehto ei täsmää ja ELSE jätetään pois, CASE palauttaa NULL-arvon. Lisätkää oletusarvoa varten eksplisiittinen ELSE, jotta odottamattomat arvot eivät muutu huomaamatta NULL-arvoiksi.

-- No ELSE: anything not 1/2 becomes NULL
SELECT CASE flag WHEN 1 THEN 'yes' WHEN 2 THEN 'no' END AS label
FROM toggles;

Ehdollinen aggregointi (pivot-kuvio)

Haastatteluissa erityisen hyödyllinen tekniikka on ehdollinen aggregointi. Sijoittamalla CASE-lausekkeen SUM- tai COUNT-funktion sisään voitte laskea kunkin luokan rivit yhdellä läpikäynnillä — tuloksena on siisti pivot-tyyppinen raportti.

SELECT
  SUM(CASE WHEN status = 'paid'    THEN 1 ELSE 0 END) AS paid_orders,
  SUM(CASE WHEN status = 'pending' THEN 1 ELSE 0 END) AS pending_orders,
  SUM(CASE WHEN status = 'paid'    THEN amount ELSE 0 END) AS paid_revenue
FROM orders;

COUNT ohittaa NULL-arvot: CASE-oikotie

Koska COUNT ohittaa NULL-arvot, ELSE-haaran voi jättää pois. Tällöin ehdot täyttämättömät rivit muuttuvat NULL-arvoiksi eikä niitä lasketa mukaan. Tämä on hieman lyhyempi tapa tehdä ehdollinen laskenta.

SELECT
  COUNT(CASE WHEN status = 'paid' THEN 1 END)    AS paid_orders,
  COUNT(CASE WHEN status = 'pending' THEN 1 END) AS pending_orders
FROM orders;

CASE ORDER BY -lausekkeessa mukautettua järjestystä varten

Sijoittamalla CASE ORDER BY -lausekkeeseen voitte järjestää rivit mukautetun tärkeysjärjestyksen mukaan tavallisen aakkos- tai numerojärjestyksen sijaan — esimerkiksi kiireelliset ennen normaaleja ja normaalit ennen muita.

SELECT order_id, status
FROM orders
ORDER BY
  CASE status
    WHEN 'urgent' THEN 1
    WHEN 'normal' THEN 2
    ELSE 3
  END,
  order_id;

Haarojen tyyppien yhdenmukaisuus

CASE-lausekkeen kaikkien haarojen on palautettava yhteensopiva tyyppi. Numeron ja merkkijonon yhdistelmä voi aiheuttaa virheen tai pakottaa tyyppimuunnokseen — valitkaa yksi tulostyyppi ja tehkää eksplisiittinen tyyppimuunnos tarvittaessa.

-- Keep branches the same type
SELECT CASE WHEN qty > 0 THEN CAST(qty AS VARCHAR)
            ELSE 'none'
       END AS qty_label
FROM inventory;

CASE WHERE-lausekkeessa ehdollista suodatusta varten

CASE WHERE-lausekkeessa mahdollistaa eri suodatuslogiikan käyttämisen lipun arvon perusteella — esimerkiksi eri hintarajan kullekin alueelle. Se on usein selkeämpi kuin monimutkainen AND- ja OR-ehtojen verkosto.

SELECT order_id, amount, region
FROM orders
WHERE amount > CASE region
                 WHEN 'US'  THEN 100
                 WHEN 'EU'  THEN 90
                 ELSE 50
               END;

Pikatarkistus

Ennustakaa tulos.

Kertaus

Kertaus: CASE palauttaa yhden arvon ja toimii SELECT-, WHERE- ja ORDER BY -lausekkeissa sekä aggregaateissa. Searched CASE käsittelee arvoalueita ja NULL-arvoja, ensimmäinen täsmäävä haara voittaa, täsmäämätön tapaus tarkoittaa NULL-arvoa, ja haarojen tyyppien on oltava yhteensopivia.

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
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”CASE-lausekkeet SELECTissä” ilmainen?

Kyllä – oppitunnin ”CASE-lausekkeet SELECTissä” 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-työhaastatteluun valmistautuminen-kurssin, päivitä CoddyKit PROhon. SQL-työhaastatteluun valmistautuminen-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”CASE-lausekkeet SELECTissä”?

Kirjoita upotettua ehdollista logiikkaa ja tutustu haetun ja yksinkertaisen CASE-lausekkeen muotoihin Harjoittelet SQL-työhaastatteluun valmistautuminen-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni SQL-työhaastatteluun valmistautuminen-opiskelun?

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

Kuinka kauan ”CASE-lausekkeet SELECTissä”-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-työhaastatteluun valmistautuminen-oppitunnilla?

Kyllä. Jokainen SQL-työhaastatteluun valmistautuminen-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. Sarakkeiden projisointi ja aliasten sudenkuopat
  2. Lasketut sarakkeet ja lausekkeiden prioriteetti
  3. DISTINCT vai GROUP BY yksikäsitteisyyden saavuttamiseksi
  4. CASE-lausekkeet SELECTissä
← Takaisin: SQL-työhaastatteluun valmistautuminen