CASE-lausekkeet SELECTissä
Kirjoita upotettua ehdollista logiikkaa ja tutustu haetun ja yksinkertaisen CASE-lausekkeen muotoihin
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.
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
- Sarakkeiden projisointi ja aliasten sudenkuopat
- Lasketut sarakkeet ja lausekkeiden prioriteetti
- DISTINCT vai GROUP BY yksikäsitteisyyden saavuttamiseksi
- CASE-lausekkeet SELECTissä