La función de Microsoft Excel sumif
suma celdas que cumplen una condición:
Excel: =SUMIF(<source>, <condition>)
el mismo comportamiento se puede obtener en SQL usando un case
expresión dentro de la función sum
:
SQL: SUM(CASE WHEN <condition> THEN <wert> END)
en Excel, el <Source> 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., El group by
y over
cláusulas especificar las filas. La columna se usa explícitamente en la expresión <condition>
que se coloca en la expresión case
.
Excel: =SUMIF(Ax:Ay, 42) SQL: SUM(CASE WHEN A = 42 THEN A END)
La condición no es puesto bajo cita—no, incluso cuando se utiliza un operador de comparación:
Excel: =SUMIF(Ax:Ay, "> 42") SQL: SUM(CASE WHEN A > 42 THEN A END)
El case
expresión acepta valores diferentes en el when
y then
ramas., Esto le permite hacer lo mismo que el tercer argumento de la función sumif
.
Excel: =SUMIF(Ax:Ay, "> 42", Bx:By) SQL: SUM(CASE WHEN A > 42 THEN B END)
los valores de texto, sin embargo, deben colocarse bajo una sola quotes0:
Excel: =SUMIF(Ax:Ay, "Marvin", Bx:By) SQL: SUM(CASE WHEN A = 'Marvin' THEN B END)
Si las comparaciones de texto SQL ignoran las diferencias de mayúsculas y minúsculas depende de la llamada intercalación. Incluso el valor predeterminado varía entre los productos de base de datos: MySQL, MariaDB y SQL Server realizan comparaciones que no distinguen entre mayúsculas y minúsculas de forma predeterminada. PostgreSQL, Oracle database y SQLite tienen en cuenta, por defecto, las diferencias de mayúsculas y minúsculas.,
a diferencia de la función Excel sumif
, SQL No aplica coincidencias de comodines al comparar cadenas con el signo igual (=
). Para usar comodines en SQL, debe usar el operador like
. El operador like
usa el guion 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 *
in excels sumif
.,
Excel: =SUMIFIF(Ax:Ay, "Marvin*", Bx:By) SQL: suM(CASE WHEN A LIKE 'Marvin%' THEN B END)
Sumif
sobre varias columnas se realiza como la suma de una count
función por columna:
Excel: =SUMIF(Ax:Cy, 42) SQL: SUM(CASE WHEN A = 42 THEN A END) + SUM(CASE WHEN B = 42 THEN B END) + SUM(CASE WHEN C = 42 THEN C END)
la función Sumifs
a menudo se puede implementar con una condición and
en la expresión case
.,
Excel: =SUMIFS(Bx:By, Ax:Ay, 42, Cx:Cy, 43) SQL: COUNT(CASE WHEN A = 42 AND C = 43 THEN B END)
More about this and related topics:
-
The SQL
case
expression -
The
filter
clause in SQL -
The SQL
null
value -
Excel
countif
in SQL