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ä

.

Vastaa

Sähköpostiosoitettasi ei julkaista.