A função Microsoft Excel countif conta células que satisfazem uma condição:

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

O mesmo comportamento pode ser obtido em SQL usando uma expressão case dentro da count função:

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

No Excel, o <source> define células arbitrárias-Ax:Ay nos exemplos a seguir. Em SQL, o picking das linhas é separado do picking das colunas. As cláusulas group by e over especificam as linhas. A coluna é explicitamente usada na <condition> que é colocada na expressão case.

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

A condição não é colocada sob aspas – nem mesmo quando se usa um operador de comparação:

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

Valores de texto, no entanto, devem ser colocados sob aspas simples0:

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

Se as comparações de texto SQL ignoram ou não as diferenças de maiúsculas e minúsculas depende da chamada colação. Mesmo o padrão varia entre os produtos da base de dados: MySQL, MariaDB e SQL Server realizam por padrão comparações sem distinção entre maiúsculas e minúsculas. PostgreSQL, o banco de dados Oracle e SQLite do-per default – leve em conta as diferenças entre maiúsculas e minúsculas.

Desse modo como a função Excel countif, SQL não aplica wildcard quando comparando strings com o sinal de igual (=). Para usar wildcards em SQL, você tem que usar o operador like. O operador like usa o sublinhado (_) como curinga para um único caractere e o sinal de porcentagem (%) como curinga para qualquer número de caracteres – como ? e * em Excels countif.

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

Countif em múltiplas colunas é feito como a soma de um count função por coluna:

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)

A função Countifs pode frequentemente ser implementada com uma condição and na expressão case.

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

A função counta também pode ser implementada com uma expressão case. Para isso, SQL faz uma distinção entre strings vazias e o valor null. A seguinte expressão conta as linhas que não têm nem o valor null nem a string vazia.

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

Nota que o SQL igual a operador (=) não pode ser usado para verificar o valor nulo – você tem que usar is null em seu lugar.

Mais sobre este e tópicos relacionados:

  • O SQL case expressão

  • O SQLfilter cláusula em SQL

  • O SQLnull valor

  • Excel sumif em SQL

Deixe uma resposta

O seu endereço de email não será publicado.