La funzione di Microsoft Excel sumif
aggiunge celle che soddisfano una condizione:
Excel: =SUMIF(<source>, <condition>)
Lo stesso comportamento può essere ottenuto in SQL utilizzando un case
espressione all’interno del sum
funzione:
SQL: SUM(CASE WHEN <condition> THEN <wert> END)
In Excel, <fonte> definisce arbitrario cellule—Ax:Ay negli esempi seguenti. In SQL, il prelievo delle righe è separato dal prelievo delle colonne., Le clausolegroup by
eover
specificano le righe. La colonna viene utilizzata esplicitamente nell’espressione<condition>
che viene inserita nell’espressionecase
.
Excel: =SUMIF(Ax:Ay, 42) SQL: SUM(CASE WHEN A = 42 THEN A END)
La condizione non viene messo sotto virgolette, non anche quando si utilizza un operatore di confronto:
Excel: =SUMIF(Ax:Ay, "> 42") SQL: SUM(CASE WHEN A > 42 THEN A END)
case
espressione accetta valori diversi nel when
e then
rami., Questo ti permette di fare la stessa cosa del terzo argomento della funzione sumif
.
Excel: =SUMIF(Ax:Ay, "> 42", Bx:By) SQL: SUM(CASE WHEN A > 42 THEN B END)
I valori di testo, tuttavia, devono essere messi sotto singole quote0:
Excel: =SUMIF(Ax:Ay, "Marvin", Bx:By) SQL: SUM(CASE WHEN A = 'Marvin' THEN B END)
Se i confronti di testo SQL ignorano o meno le differenze di caso dipende dalla cosiddetta collazione. Anche l’impostazione predefinita varia tra i prodotti del database: MySQL, MariaDB e SQL Server eseguono confronti senza distinzione tra maiuscole e minuscole per impostazione predefinita. PostgreSQL, Oracle database e SQLite do—per default-tengono conto delle differenze di caso.,
A differenza della funzione Excelsumif
, SQL non applica corrispondenze jolly quando si confrontano le stringhe con il segno di uguale (=
). Per utilizzare i caratteri jolly in SQL, è necessario utilizzare l’operatorelike
. like
operatore utilizza un carattere di sottolineatura (_
) come carattere jolly per un singolo carattere e il segno di percentuale (%
) come il jolly per qualsiasi numero di caratteri come ?
e *
in Eccelle sumif
.,
Excel: =SUMIFIF(Ax:Ay, "Marvin*", Bx:By) SQL: suM(CASE WHEN A LIKE 'Marvin%' THEN B END)
Sumif
su più colonne è fatto come la somma di un count
funzione per colonna:
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 funzione Sumifs
spesso può essere implementato con un and
condizione case
espressione.,
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