La función de Microsoft Excel countif cuenta las celdas que satisfacen una condición:

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

El mismo comportamiento se puede obtener en SQL utilizando una expresión case dentro de la función count:

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

En Excel, la <fuente> define celdas arbitrarias-Ax:Ay en los siguientes ejemplos. En SQL, la selección de las filas es independiente de la selección de las columnas. Las cláusulas group by y over especifican las filas. La columna se utiliza explícitamente en el <condition> que se pone en la expresión case.

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

La condición no se pone entre comillas-ni siquiera cuando se utiliza un operador de comparación:

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

Los valores de texto, sin embargo, deben ponerse entre comillas simples0:

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

Si las comparaciones de texto de SQL ignoran o no las diferencias entre mayúsculas y minúsculas depende de la llamada colación. Incluso el valor por defecto varía entre los productos de bases de datos: MySQL, MariaDB y SQL Server realizan comparaciones que no distinguen entre mayúsculas y minúsculas por defecto. PostgreSQL, la base de datos Oracle y SQLite sí tienen en cuenta -por defecto- las diferencias entre mayúsculas y minúsculas.

A diferencia de la función countif de Excel, SQL no aplica coincidencias con comodines al comparar cadenas con el signo de igual (=). Para utilizar comodines en SQL, hay que utilizar el operador like. El operador like utiliza el guión bajo (_) como comodín para un solo carácter y el signo de porcentaje (%) como comodín para cualquier número de caracteres, como ? y * en Excels countif.

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

Countif sobre múltiples columnas se realiza como la suma de una función count por columna:

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 función Countifs puede implementarse a menudo con una condición and en la expresión case.

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

La función counta puede implementarse también con una expresión case. Para ello, SQL hace una distinción entre las cadenas vacías y el valor null. La siguiente expresión cuenta las filas que no tienen ni el valor null ni la cadena vacía.

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

Tenga en cuenta que el operador SQL igual (=) no se puede utilizar para comprobar el valor nulo-tiene que utilizar is null en su lugar.

Más información sobre este tema y otros relacionados:

  • La expresión SQL case

  • La cláusula filter en SQL

  • El valor SQL null

  • Excel sumifen SQL

Deja una respuesta

Tu dirección de correo electrónico no será publicada.