la fonction Microsoft Excel sumif
additionne les cellules qui remplissent une condition:
Excel: =SUMIF(<source>, <condition>)
le même comportement peut être obtenu en SQL en utilisant un case
expression dans la sum
fonction:
SQL: SUM(CASE WHEN <condition> THEN <wert> END)
dans Excel, la <source> définit des cellules arbitraires—AX:AY dans les exemples suivants. En SQL, la sélection des lignes est séparée de la sélection des colonnes., Le group by
et over
clauses de spécifier les lignes. La colonne est utilisé explicitement dans le <condition>
dans le case
expression.
Excel: =SUMIF(Ax:Ay, 42) SQL: SUM(CASE WHEN A = 42 THEN A END)
La condition n’est pas mis sous les guillemets, même pas lors de l’utilisation d’un opérateur de comparaison:
Excel: =SUMIF(Ax:Ay, "> 42") SQL: SUM(CASE WHEN A > 42 THEN A END)
Le case
expression accepte des valeurs différentes dans le when
et then
branches., Cela vous permet de faire la même chose que le troisième argument de la fonction sumif
.
Excel: =SUMIF(Ax:Ay, "> 42", Bx:By) SQL: SUM(CASE WHEN A > 42 THEN B END)
Les valeurs de texte doivent cependant être placées sous des guillemets uniques0:
Excel: =SUMIF(Ax:Ay, "Marvin", Bx:By) SQL: SUM(CASE WHEN A = 'Marvin' THEN B END)
que les comparaisons de texte SQL ignorent ou non les différences de casse dépend de ce que l’on appelle le classement. Même la valeur par défaut varie entre les produits de base de données: MySQL, MariaDB et SQL Server effectuent des comparaisons insensibles à la casse par défaut. PostgreSQL, La base de données Oracle et sqlite prennent-par défaut-en compte les différences de cas.,
contrairement à la fonction Excelsumif
, SQL n’applique pas de correspondance Générique lors de la comparaison de chaînes avec le signe égal (=
). Pour utiliser des caractères génériques dans SQL, vous devez utiliser l’opérateurlike
. La balise like
opérateur utilise le trait de soulignement (_
) comme un caractère générique pour un seul caractère et le signe de pourcentage (%
) comme le générique pour n’importe quel nombre de caractères—comme ?
et *
Excelle dans sumif
.,
Excel: =SUMIFIF(Ax:Ay, "Marvin*", Bx:By) SQL: suM(CASE WHEN A LIKE 'Marvin%' THEN B END)
Sumif
sur plusieurs colonnes est fait comme la somme de count
fonction par colonne:
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 fonction Sumifs
peut souvent être mise en œuvre avec un and
condition dans la balise case
expression.,
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