A função do Microsoft Excel sumif
adiciona as células que satisfazem uma condição:
Excel: =SUMIF(<source>, <condition>)
O mesmo comportamento pode ser obtido no SQL usando um case
expressão dentro de sum
função:
SQL: SUM(CASE WHEN <condition> THEN <wert> END)
No Excel, <fonte> define arbitrário células—Ax:Ay nos exemplos a seguir. Em SQL, a escolha das linhas é separada da escolha das colunas., The group by
and over
clauses specify the rows. A coluna é explicitamente usada na expressão<condition>
que é colocada na expressãocase
.
Excel: =SUMIF(Ax:Ay, 42) SQL: SUM(CASE WHEN A = 42 THEN A END)
A condição é não colocar em aspas—não mesmo quando se usa um operador de comparação:
Excel: =SUMIF(Ax:Ay, "> 42") SQL: SUM(CASE WHEN A > 42 THEN A END)
case
expressão de que aceita a diferentes valores de when
e then
ramos., Isto permite que você faça a mesma coisa que o terceiro argumento da função sumif
.
Excel: =SUMIF(Ax:Ay, "> 42", Bx:By) SQL: SUM(CASE WHEN A > 42 THEN B END)
os valores de Texto, no entanto, devem ser submetidos a uma única quotes0:
Excel: =SUMIF(Ax:Ay, "Marvin", Bx:By) SQL: SUM(CASE WHEN A = 'Marvin' THEN B END)
Se ou não de texto SQL comparações ignorar diferenças de maiúsculas e minúsculas depende o chamado agrupamento. Mesmo o padrão varia entre os produtos de banco de dados: MySQL, MariaDB e SQL Server realizam comparações sem distinção de caso por padrão. PostgreSQL, a base de Dados Oracle e SQLite do—per default—take case differences into account.,
Ao contrário da função Excel sumif
, SQL não aplica correspondências de caracteres especiais ao comparar cadeias com o sinal de igual (=
). Para usar caracteres especiais em SQL, você tem que usar o operador like
. like
operador utiliza um carácter de sublinhado (_
) como um caractere curinga para um único caractere e o sinal de porcentagem (%
) como o curinga para qualquer número de caracteres como ?
e *
no Sobressai sumif
.,
Excel: =SUMIFIF(Ax:Ay, "Marvin*", Bx:By) SQL: suM(CASE WHEN A LIKE 'Marvin%' THEN B END)
Sumif
ao longo de várias colunas é feito como a soma de uma count
função por coluna:
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)
A função Sumifs
muitas vezes pode ser implementado com um and
estado case
expressão.,
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