Microsoft Excel funcția sumif
adaugă celule care satisfac o condiție:
Excel: =SUMIF(<source>, <condition>)
același comportament pot fi obținute în SQL folosind un case
expresie în interiorul sum
funcția:
SQL: SUM(CASE WHEN <condition> THEN <wert> END)
În Excel, <sursă> definește arbitrare celule—Ax:Ay în următoarele exemple. În SQL, culesul rândurilor este separat de culesul coloanelor., Thegroup by
șiover
clauzele specifica rândurile. Coloana este folosită în mod explicit în expresia <condition>
care este pusă în expresia case
.
Excel: =SUMIF(Ax:Ay, 42) SQL: SUM(CASE WHEN A = 42 THEN A END)
condiție nu este pus în ghilimele—nu chiar și atunci când utilizați un operator de comparare:
Excel: =SUMIF(Ax:Ay, "> 42") SQL: SUM(CASE WHEN A > 42 THEN A END)
case
expresie acceptă valori diferite în when
și then
ramuri., Acest lucru vă permite să faceți același lucru ca al treilea argument al funcției sumif
.
Excel: =SUMIF(Ax:Ay, "> 42", Bx:By) SQL: SUM(CASE WHEN A > 42 THEN B END)
valorile de Text, cu toate acestea, trebuie să fie pus sub un singur quotes0:
Excel: =SUMIF(Ax:Ay, "Marvin", Bx:By) SQL: SUM(CASE WHEN A = 'Marvin' THEN B END)
Dacă este sau nu de SQL text comparații ignoră diferențele depinde de așa-numita coaliție. Chiar și valoarea implicită variază între produsele bazei de date: MySQL, MariaDB și SQL Server efectuează în mod implicit comparații insensibile la majuscule. PostgreSQL, Oracle database și SQLite do—per default-iau în considerare diferențele de caz.,
spre Deosebire de Excel sumif
funcția, SQL nu se aplică wildcard meciuri atunci când se compară șirurile cu semnul egal (=
). Pentru a utiliza metacaractere în SQL, trebuie să utilizați operatorul like
. like
operatorul utilizează subliniere (_
) ca un wildcard pentru un singur caracter și semnul procent (%
) ca wildcard pentru orice număr de caractere—cum ar fi ?
și *
în Excelează sumif
.,
Excel: =SUMIFIF(Ax:Ay, "Marvin*", Bx:By) SQL: suM(CASE WHEN A LIKE 'Marvin%' THEN B END)
Sumif
pe mai multe coloane se face ca sumă a un count
funcția pe coloana:
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)
funcția Sumifs
poate fi de multe ori pus în aplicare cu un and
starea în case
expresie.,
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