Excelează SUMIF în SQL

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

Author: admin

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *