La fonction countif de Microsoft Excel compte les cellules qui satisfont à une condition:

Excel: =COUNTIF(<source>, <condition>)

Le même comportement peut être obtenu en SQL en utilisant une expression case à l’intérieur de la fonction count:

 SQL: COUNT(CASE WHEN <condition> THEN 1 END)

En Excel, la <source> définit des cellules arbitraires-Ax:Ay dans les exemples suivants. En SQL, le prélèvement des lignes est distinct du prélèvement des colonnes. Les clauses group by et over spécifient les lignes. La colonne est explicitement utilisée dans la <condition> qui est mise dans l’expression case.

Excel: =COUNTIF(Ax:Ay, 42) SQL: COUNT(CASE WHEN A = 42 THEN 1 END)

La condition n’est pas mise entre guillemets – même pas lorsqu’on utilise un opérateur de comparaison:

Excel: =COUNTIF(Ax:Ay, "> 42") SQL: COUNT(CASE WHEN A > 42 THEN 1 END)

Les valeurs de texte, cependant, doivent être mises entre guillemets simples0:

Excel: =COUNTIF(Ax:Ay, "Marvin") SQL: COUNT(CASE WHEN A = 'Marvin' THEN 1 END)

Le fait que les comparaisons de texte SQL ignorent ou non les différences de casse dépend de ce qu’on appelle la collation. Même la valeur par défaut varie selon les produits de base de données : MySQL, MariaDB et SQL Server effectuent des comparaisons insensibles à la casse par défaut. PostgreSQL, la base de données Oracle et SQLite prennent en compte – par défaut – les différences de casse.

Contrairement à la fonction countif d’Excel, SQL n’applique pas de correspondance avec des caractères génériques lors de la comparaison de chaînes de caractères avec le signe égal (=). Pour utiliser des caractères génériques en SQL, vous devez utiliser l’opérateur like. L’opérateur like utilise le trait de soulignement (_) comme joker pour un seul caractère et le signe pourcent (%) comme joker pour un nombre quelconque de caractères, comme ? et * dans Excels countif.

Excel: =COUNTIF(Ax:Ay, "Marvin*") SQL: COUNT(CASE WHEN A LIKE 'Marvin%' THEN 1 END)

Countif sur plusieurs colonnes se fait comme la somme d’une fonction count par colonne:

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)

La fonction Countifs peut souvent être mise en œuvre avec une condition and dans l’expression case.

Excel: =COUNTIFS(Ax:Ay, 42, Bx:By, 43) SQL: COUNT(CASE WHEN A = 42 AND B = 43 THEN 1 END)

La fonction counta peut également être mise en œuvre avec une expression case. Pour cela, SQL fait une distinction entre les chaînes vides et la valeur null. L’expression suivante compte les lignes qui n’ont ni la valeur null ni la chaîne vide.

SQL: COUNT(CASE WHEN A IS NOT NULL AND A != '' THEN 1 END)

Notez que l’opérateur égal SQL (=) ne peut pas être utilisé pour vérifier la valeur nulle-vous devez utiliser is null à la place.

Plus d’informations sur ce sujet et sur des sujets connexes :

  • L’expression SQL case

  • La filter clause en SQL

  • La valeur SQL null

  • Excel sumif en SQL

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.