Microsoft Excelin funktio countif
laskee solut, jotka täyttävät ehdon:
Excel: =COUNTIF(<source>, <condition>)
Sama käyttäytyminen saadaan SQL:ssä käyttämällä case
-lauseketta count
-funktion count
sisällä:
SQL: COUNT(CASE WHEN <condition> THEN 1 END)
Excelissä <lähde> määrittelee mielivaltaiset solut-Ax:Ay seuraavissa esimerkeissä. SQL:ssä rivien poiminta on erillään sarakkeiden poiminnasta. Lausekkeet group by
ja over
määrittävät rivit. Saraketta käytetään eksplisiittisesti <condition>
, joka laitetaan case
-lausekkeeseen.
Excel: =COUNTIF(Ax:Ay, 42) SQL: COUNT(CASE WHEN A = 42 THEN 1 END)
Ehtoa ei laiteta lainausmerkkien alle – ei edes silloin, kun käytetään vertailuoperaattoria:
Excel: =COUNTIF(Ax:Ay, "> 42") SQL: COUNT(CASE WHEN A > 42 THEN 1 END)
Tekstiarvot on kuitenkin laitettava yksinkertaisten lainausmerkkien alle0:
Excel: =COUNTIF(Ax:Ay, "Marvin") SQL: COUNT(CASE WHEN A = 'Marvin' THEN 1 END)
Se, sivuuttavatko SQL:n tekstinvertailut isojen ja pienten kirjainten välisiä eroja,
Excel: =COUNTIF(Ax:Ay, "Marvin") SQL: COUNT(CASE WHEN A = 'Marvin' THEN 1 END)
riippuu niin sanotusta kollokaatiosta. Jopa oletusarvo vaihtelee tietokantatuotteiden välillä: MySQL, MariaDB ja SQL Server suorittavat oletusarvoisesti case-insensitive-vertailut. PostgreSQL, Oracle-tietokanta ja SQLite ottavat – oletusarvoisesti – isojen ja pienten kirjainten erot huomioon.
Toisin kuin Excelin countif
-funktio, SQL ei sovella jokerimerkkitapauksia vertaillessaan merkkijonoja yhtäsuuruusmerkillä (=
). Jos haluat käyttää jokerimerkkejä SQL:ssä, sinun on käytettävä like
-operaattoria. like
-operaattori käyttää alleviivaa (_
) yhden merkin jokerimerkkinä ja prosenttimerkkiä (%
) minkä tahansa merkkimäärän jokerimerkkinä – kuten ?
ja *
Excelin countif
:ssä.
Excel: =COUNTIF(Ax:Ay, "Marvin*") SQL: COUNT(CASE WHEN A LIKE 'Marvin%' THEN 1 END)
Countif
usean sarakkeen yli tehdään yhden count
-funktion summana saraketta kohti:
Excel: =COUNTIF(Ax:Cy, 42) SQL: COUNT(CASE WHEN A = 42 THEN 1 END) + COUNT(CASE WHEN B = 42 THEN 1 END) + COUNT(CASE WHEN C = 42 THEN 1 END)
Funktio Countifs
voidaan usein toteuttaa and
-ehdolla case
-lausekkeessa.
Excel: =COUNTIFS(Ax:Ay, 42, Bx:By, 43) SQL: COUNT(CASE WHEN A = 42 AND B = 43 THEN 1 END)
Funktio counta
voidaan toteuttaa myös case
-lausekkeessa. Sitä varten SQL tekee eron tyhjien merkkijonojen ja null
-arvon välillä. Seuraava lauseke laskee ne rivit, joilla ei ole null
-arvoa eikä tyhjää merkkijonoa.
SQL: COUNT(CASE WHEN A IS NOT NULL AND A != '' THEN 1 END)
Huomaa, että SQL:n yhtäsuuruusoperaattoria (=
) ei voi käyttää nolla-arvon tarkistamiseen – sen sijaan on käytettävä is null
.
Lisätietoa tästä ja siihen liittyvistä aiheista:
-
SQL
case
-lauseke -
filter
-lauseke SQL:ssä -
SQL:n
null
-arvo -
Excelin
sumif
-arvo SQL:ssä
.