Summary: tässä opetusohjelmassa opit käyttämään PostgreSQL CASE-ehdollista lauseketta ehdollisten kyselyjen muodostamiseen.
PostgreSQL CASE
lauseke on sama kuin IF/ELSE
lauseke muissakin ohjelmointikielissä. Sen avulla voit lisätä if-else-logiikan kyselyyn muodostaaksesi tehokkaan kyselyn.
koska CASE
on lauseke, sitä voi käyttää missä tahansa paikassa, jossa lauseketta voidaan käyttää esim.,SELECT
, WHERE
, GROUP BY
, ja HAVING
lauseke.
CASE
ilmaisulla on kaksi muotoa: yleinen ja yksinkertainen muoto.
- 1) Yleinen PostgreSQL-TAPAUSLAUSEKE
- a) yleinen tapausesimerkki
- B) käyttämällä casea, jossa on aggregaattifunktioesimerkki
- 2) Yksinkertainen PostgreSQL-lauseke
- a) Yksinkertainen PostgreSQL-TAPAUSLAUSEKE esimerkki
- B) käyttämällä yksinkertaista PostgreSQL-TAPAUSLAUSEKETTA, jossa on aggregaattifunktioesimerkki
1) Yleinen PostgreSQL-TAPAUSLAUSEKE
seuraava havainnollistaa CASE
lausekkeen yleistä muotoa:
Code language: SQL (Structured Query Language) (sql)
tässä syntaksissa jokainen ehto (condition_1
, condition_2
…) on Boolen lauseke, joka palauttaa joko true
tai false
.
kun tila arvioidaan tasolle false
, CASE
lauseke arvioi seuraavan tilan ylhäältä alas, kunnes se löytää tilan, joka arvioi arvoksi true
.
jos ehto arvioidaan arvoon true
, CASE
lauseke palauttaa vastaavan tuloksen, joka seuraa ehtoa. Esimerkiksi jos condition_2
arvioi arvoon true
, CASE
lauseke palauttaa arvon result_2
. Se myös lopettaa välittömästi seuraavan ilmaisun arvioimisen.
jos kaikki ehdot arvioidaan arvoon false
, CASE
lauseke palauttaa tuloksen (else_result
), joka seuraa ELSE
hakusanaa. Jos ELSE
– lausekkeen jättää pois, CASE
lauseke palauttaa NULL
.
Katsotaanpa film
taulukkoa otostietokannasta.
a) yleinen tapausesimerkki
Oletetaan, että Elokuvat halutaan merkitä niiden pituuden mukaan seuraavan logiikan perusteella:
- jos elokuvan pituus on alle 50 minuuttia, elokuva on lyhyt.
- jos filmin pituus on yli 50 minuuttia ja enintään 120 minuuttia, se on keskikokoinen.
- jos pituus on yli 120 minuuttia, elokuva on pitkä.
tämän logiikan soveltamiseksi voit käyttää CASE
lauseketta SELECT
lausekkeessa seuraavasti:
Code language: PHP (php)
tuloste:
huomaa, että asetimme CASE
– lausekkeen jälkeen sarakenimen duration
.
B) käyttämällä casea, jossa on aggregaattifunktioesimerkki
Oletetaan, että haluat määrittää hintasegmentit elokuville seuraavalla logiikalla:
- jos vuokraprosentti on 0,99, elokuva on taloudellinen.
- jos vuokrausaste on 1,99, elokuva on massaltaan.
- jos vuokraprosentti on 4,99, elokuva on premium.
ja haluat tietää, kuinka monta elokuvaa kuuluu talouteen, massaan ja Premiumiin.
tässä tapauksessa voit käyttää CASE
lauseketta kyselyn konstruoimiseksi seuraavasti:
Code language: SQL (Structured Query Language) (sql)
kyselyn tulos on seuraava:
tässä esimerkissä käytimme CASE
– ilmaisua palauttaaksemme 1 tai 0, jos vuokrataso laskee kuhunkin hintasegmenttiin. Ja sovellimme SUM
funktiota laskeaksemme filmien kokonaismäärän kullekin hintasegmentille.
2) Yksinkertainen PostgreSQL-lauseke
PostgreSQL tarjoaa CASE
– lausekkeen toisen muodon, jota kutsutaan yksinkertaiseksi muodoksi seuraavasti:
Code language: SQL (Structured Query Language) (sql)
CASE
ensimmäinen arvioi expression
ja vertaa tulosta jokaiseen arvoon( value_1
, value_2
, …) WHEN
lausekkeissa peräkkäin, kunnes se löytää ottelun.
kun expression
tulos on yhtä suuri kuin arvo (arvo1, arvo2 jne.) WHEN
lausekkeessa CASE
palauttaa vastaavan tuloksen THEN
lausekkeessa.
jos CASE
ei löydä osumia, se palauttaa else_result
, joka seuraa ELSE
, tai NULL
arvoa, jos ELSE
ei ole saatavilla.
a) Yksinkertainen PostgreSQL-TAPAUSLAUSEKE esimerkki
seuraava lauseke käyttää CASE
– lauseketta luokituksen kuvauksen lisäämiseksi tulosteeseen:
Code language: PHP (php)
tässä esimerkissä käytimme yksinkertaista CASE
lauseketta verrataksemme film
-taulukon luokitusta joihinkin kirjaimellisiin arvoihin, kuten G, PG, NC17, PG-13, ja palauttaaksemme vastaavan luokituksen kuvauksen.
B) käyttämällä yksinkertaista PostgreSQL-TAPAUSLAUSEKETTA, jossa on aggregaattifunktioesimerkki
seuraava lauseke käyttää CASE
lauseketta, jossa on SUM
funktio, laskeakseen filmien määrän kussakin luokituksessa:
Code language: PHP (php)
tässä opetusohjelmassa olet oppinut käyttämään PostgreSQL CASE
– lauseketta monimutkaisten kyselyiden muodostamiseen.
- oliko tästä opetuksesta apua ?
- YesNo