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
caseexpression -
The
filterclause in SQL -
The SQL
nullvalue -
Excel
countifin SQL




