Contacte

Suma totală SQL. Funcțiile agregate ale SQL - suma, min, max, avg, contează. Parametri sau argumente

Calcule

Funcții finale

În expresii de solicitare SQL, este adesea necesară pentru a procesează datele. În acest scop, sunt utilizate funcții și expresii speciale.

Destul de des, trebuie să știți câte înregistrări corespund unei anumite solicitări,care este suma valorilor unei coloane numerice, valoarea maximă, minimă și medie. Acest lucru servește așa-numitele funcții finale (statistice, agregate). Funcțiile finale procesează seturile de înregistrări specificate, de exemplu, expresia unde. Dacă acestea sunt incluse în lista coloanelor care urmează instrucțiunii SELECT, tabelul de rezultate va conține nu numai coloanele tabelului bazei de date, ci și valorile calculate utilizând aceste funcții. Citeste mai multlista funcțiilor finale.

  • Număr (parametru. ) - Returnează numărul de înregistrări specificate în parametru. Dacă doriți să obțineți numărul tuturor înregistrărilor, atunci trebuie să specificați simbolul asterisc (*). Dacă specificați numele coloanei ca parametru, funcția va returna numărul de intrări în care această coloană are alte valori decât NULL. Pentru a afla câte valori diferite conțin o coloană, trebuie să specificați cuvântul cheie distinct înainte de acesta. De exemplu:

Selectați numărul (*) de la clienți;

Selectați Count (Vânzare CUARD) de la clienți;

Selectați Count (distinct Sum_Name) de la clienți;

Încercarea de a efectua următoarea interogare va face un mesaj de eroare:

Selectați regiunea, numărul (*) de la clienți;

  • Sumă (parametru. ) - Returnează cantitatea de valori ale coloanei specificate în parametru. Parametrul poate fi atât o expresie care conține numele coloanei. De exemplu:

Selectați suma. (Valoarea_name) de la clienți;

Această expresie SQL returnează o masă constând dintr-o singură coloană și o înregistrare și care conține suma tuturor anumitor valori ale valorii coloanei din tabelul clientului.

Să presupunem că în tabelul sursă, valoarea cantității coloanei este exprimată în ruble și trebuie să calculam suma totală în dolari. Dacă cursul de schimb curent este, de exemplu, 27,8, atunci este posibil să se obțină rezultatul dorit folosind o expresie:

Selectați suma. (Sum_name * 27,8) de la clienți;

  • AVG (parametru. ) - Returnează media aritmetică a tuturor valorilor specificate în parametrul coloanei. Parametrul poate fi o expresie care conține numele coloanei. De exemplu:

Selectați AVG (Sum_name) de la clienți;

Selectați AVG (Sum_Name * 27.8) de la clienți

Unde regiunea<> "North_3Apad";

  • Mach (parametru. ) - Returnează valoarea maximă din coloana specificată în parametru. Parametrul poate fi, de asemenea, o expresie care conține numele coloanei. De exemplu:

Selectați max (Sum__nce) de la clienți;

Selectați Mach (Sum_Name * 27,8) de la clienți

Unde. Regiune<> "North_3Apad";

  • Min (parametru. ) - Returnează valoarea minimă din coloana specificată în parametru. Parametrul poate fi o expresie care conține numele coloanei. De exemplu:

Selectați min (comandă de vânzare) de la clienți;

Selectați min (Sum__nce * 27. 8) de la clienți

Unde. Regiune<> "North_3Apad";

În practică, este adesea necesar să se obțină un tabel final care conține valorile totale, medii, maxime și minime ale coloanelor numerice. Pentru a face acest lucru, utilizați grupul de grup (grup de) și funcții finale.

Selectați regiunea, suma (SumaDER) de la clienți

Grup pe regiune;

Tabelul de rezultate pentru această solicitare conține numele regiunilor și valoarea totală (generală) a comenzilor tuturor clienților din regiunile respective (figura 5).

Acum, luați în considerare o cerere de primire a tuturor datelor finale pe regiune:

Selectați regiunea, suma (SUP Option), AVG (Sum_name), max (sum_name),Min (sum_name)

De la clienți

Grup pe regiune;

Tabelele sursă și rezultate sunt prezentate în fig. 8. În exemplu, numai Regiunea Nord-Vest este prezentată în tabelul sursă cu mai mult de o înregistrare. Prin urmare, în tabelul de rezultate pentru aceasta, diverse rezultate primesc valori diferite.

Smochin. 8. Valoarea masa finală a comenzilor pe regiune

Când utilizați funcțiile finale din lista de coloane din instrucțiunea Select, anteturile corespunzătoare acestora în tabelul de rezultate au apariția expr1001, expr1002 etc. (sau ceva similar, în funcție de implementarea SQL). Cu toate acestea, titlurile pentru valorile funcțiilor finale și alte coloane pe care le puteți seta la discreția dvs. Pentru a face acest lucru, suficient după coloana din instrucțiunea SELECT, specificați expresia formularului:

Ca titlu_stolbets.

Cuvântul cheie (AS) înseamnă că în tabelul de rezultate, coloana corespunzătoare trebuie să aibă un titlu specificat după cum. Antetul numit este numit și un pseudonim. În exemplul următor (fig.9), pseudonimele sunt stabilite pentru toate coloanele calculate:

Selectați regiunea,

SUMĂ. (Sum_name) ca [suma totală a comenzii],

AVG. (Suma ordinului) ca [suma medie a ordinii],

Max (sum_name) ca maxim

Min. (Sum_name) ca minim,

De la clienți

Grup pe regiune;

Smochin. 9. Tabelul final al comenzilor pe regiuni care utilizează aliasul coloanei

Pseudonimele, constând din mai multe cuvinte separate de spații, sunt paranteze pătrate.

Funcțiile finale pot fi utilizate în selecția și având expresii, dar ele nu pot fi utilizate în cazul în care expresia. OneReter având este similar cu operatorul în care operatorul, dar, spre deosebire de locul în care selectează înregistrările în grupuri.

Să presupunem că este necesar să se determine în ce regiuni mai mult de un client. În acest scop, puteți utiliza această solicitare:

Selectați regiunea, numărul (*)

De la clienți

Grupul de regiune având numărul (*)\u003e 1;

Funcții pentru prelucrarea valorilor

Când lucrați cu date, ele trebuie adesea să le proceseze (convertiți la forma dorită): Selectați un substring în linie, îndepărtați golurile de conducere și finale, rotunjați numărul, calculați rădăcina pătrată, determinați ora curentă etc. După trei tipuri de funcții sunt disponibile în SQL:

  • funcțiile șirului;
  • funcții numerice;
  • funcțiile datează.

String Funcții

Funcțiile de șir sunt luate ca parametru șir și returnați după procesarea șirul sau null.

  • Substring. (Șir de la început) - Returnează un substring obținut din șirul care este specificat ca parametrulinie. Substring. Începe cu caracterul, numărul de secvență este specificat în parametrul Start și are lungimea specificată în parametrul de lungime. Numerotarea simbolurilor de șir este efectuată de la stânga la dreapta, începând cu 1. Parantezele pătrate aici indică doar faptul că expresia încheiată în ele nu este obligatorie. Dacă expresiaPentru lungime nu este folosit, atunci substringul este returnat de lastart și până la sfârșitul liniei sursă. Valorile parametriloracasă și lungime. Trebuie să fie selectată astfel încât substringul dorit să fie într-adevăr în interiorul liniei sursă. În caz contrar, funcția de substring va reveni null.

De exemplu:

Substring ("Dragă Masha!" De la 9 pentru 4) - returnează "Masha";

Substring ("Dragă Masha!" Din 9) -ards "Masha!";

Substring ("Dragă Masha!" Din 15) este nulă.

Puteți utiliza această caracteristică în expresia SQL, de exemplu, după cum urmează:

Selectați * de la clienți

Unde substring (regiune de la 1 pentru 5) \u003d "Nord";

  • Superior (șir. ) - transferă toate caracterele specificate în parametrul șirului cu majuscule.
  • Inferior ) - transferă toate caracterele specificate în parametrul șirului în registrul inferior.
  • Trim (lider | Trailing | Ambele ["simbol"] de la rând ) - Șterge liderul (lider), final (trailing) sau acelea și altele (ambele) dintr-un șir. În mod implicit, un simbol de la distanță este un spațiu (""), astfel încât nu poate fi indicat. Cel mai adesea, această caracteristică este utilizată cu precizie pentru a elimina spațiile.

De exemplu:

Trim (conducerea "" din "Orașul Sf. Petersburg") rotește "orașul Sankt Petersburg";

Trim (Trailing "" Din "City of St Petersburg" returnează orașul Sankt Petersburg;

Trim (ambele "" din "Orașul Sf. Petersburg") - returnează orașul Sankt Petersburg;

Trim (atât din "orașul Sf. Petersburg") - returnează orașul Sankt Petersburg;

Trim (atât "domnul" de la "Orașul Sf. Petersburg") - returnează "Sf. Petersburg OOD".

Printre aceste funcții sunt cele mai frecvent utilizate - substring () și Trim ().

Funcții numerice.

Funcțiile numerice ca parametru pot primi date nu numai tip numeric, dar întotdeauna returnează numărul sau null (valoarea nedeterminată).

  • ( targetStrock în șir.) - caută intrarea liniei țintă la șirul specificat. În cazul unei căutări de succes, returnează numărul de poziție al primului său caracter, altfel - 0. Dacă linia țintă are o lungime zero (de exemplu, un șir "), atunci funcția returnează 1. Dacă cel puțin unul dintre parametri este nul, nul este returnat. Numerotarea simbolurilor de șir este efectuată de la stânga la dreapta, începând de la 1.

De exemplu:

Poziția ("E" în "Hello Toată lumea") - Returnează 5;

Poziția ("Toate" în "Hello Toată lumea") - returnează 8;

Poziția ("Bună ziua tuturor") - Returnează 1;

Poziția ("Bună!" În "Bună ziua toată lumea") - returnează 0.

În tabelul Clienți (vezi figura 1) coloana de adresă conține, cu excepția numelui orașului, codul poștal, numele străzii și altor date. Este posibil să aveți nevoie să alegeți înregistrările clienților care locuiesc într-un anumit oraș. Deci, dacă aveți nevoie să alegeți înregistrări legate de clienții care locuiesc în Sankt Petersburg, puteți utiliza următoarea expresie SQL Solicitare:

Selectați * de la clienți

Unde poziția ("Sf. Petersburg" în adresa)\u003e 0;

Rețineți că această solicitare simplă de selectare a datelor poate fi formulată altfel:

Selectați * de la clienți

Unde adresa "% petersburg%";

  • Extrage (parametru. ) - extrage un element de la tipul de dată sau de la interval. De exemplu:

Extras (luna de la data "2005-10-25") -returnează 10.

  • Caracter_length (șir. ) - Returnează numărul de caractere din șir.

De exemplu:

Caracter_length ("salut toată lumea") - returnează 11.

  • Octet_length (șir. ) - Returnează numărul de octeți (octeți) în șir. Fiecare simbol al latinului sau chirilicului este un octet, iar simbolul alfabetului chinez este doi octeți.
  • Cardinalitate (parametru. ) - ia o colecție de elemente ca parametru și returnează numărul de elemente din colecție (număr cardinal). Colecția poate fi, de exemplu, cu o matrice sau cu multiset care conține elemente de diferite tipuri.
  • ABS (număr ) - Returnează valoarea absolută a numărului. De exemplu:

ABS (-123) este de 123;

ABS (2 - 5) - Returnează 3.

  • MO D (numărul1, numărul 2 ) - Returnează echilibrul diviziei întregi a primului număr la al doilea. De exemplu:

Mod (5, h) - returnează 2;

MOD (2, S) - returnează 0.

  • Ln (număr ) - Returnează logaritmul natural al numărului.
  • ExR (număr) - returnări (Baza logaritmului natural în măsura).
  • Putere (numărul1, numărul 2 ) - returnează numărul 1numarul 2 (numărul 1 la gradul Număr2).
  • Sqrt (număr ) - Returnează o rădăcină pătrată de la.
  • Etajul (numărul ) - Returnează cel mai mare număr întreg care nu depășește parametrul specificat (rotunjit la o direcție mai mică). De exemplu:

Podea (5.123) - returnează 5.0.

  • Ceil (număr) sau plafon (număr ) - Returnează cel mai mic număr întreg care nu este mai mic decât parametrul de rotunjire într-o direcție mare). De exemplu:

CEL (5.123) - returnează 6. 0.

  • Width_bucket. (numărul 1, numărul2, numerose, numărul4) returnează un număr întreg în intervalul 0 și numărul 4 + 1. Parametrii Număr2 și numerose Specificați un segment numeric, împărțit în intervale de echilibru, numărul căruia este setat de numărul 4. Funcția determină funcția numărul intervalului în care valoarea numărul 1. Dacă numărul 1 este în afara domeniului specificat, atunci funcția returnează 0 sau numărul 4 + 1. De exemplu:

Width_bucket (3.14, 0, 9, 5) - returnează 2.

Funcțiile datei

Limba SQL are trei funcții care returnează data și ora curente.

  • Data curenta. - Returnează data curentă (data tipului).

De exemplu: 2005-06-18.

  • Curent_time (număr ) - Returnează ora curentă (tip de timp). Un parametru întregi indică acuratețea prezentării secundelor. De exemplu, cu o valoare de 2 secunde va fi prezentată cu o precizie de sute (două cifre în partea fracțională):

12:39:45.27.

  • Current_Timestamp (număr. ) - Returnează data și ora (tipul de timp). De exemplu, 2005-06-18 12: 39: 45.27. Un parametru întregi indică acuratețea prezentării secundelor.

Rețineți că data și ora returnată de aceste funcții nu au tip de simbol. Dacă doriți să le trimiteți sub formă de caractere de caractere, atunci pentru aceasta ar trebui să utilizați funcția de conversie turnată ().

Funcțiile de timp date sunt de obicei aplicate în introducerea cererilor, actualizarea și ștergerea datelor. De exemplu, atunci când scrieți o informație de vânzări într-o specialitate specializată pentru aceasta, coloana este făcută de data și ora curentă. După însumarea pentru luna sau trimestrul, datele de vânzare pentru perioada de raportare pot fi șterse.

Expresii calculate

Expresiile calculate sunt construite din constante (numerice, șir, logice), funcții, nume de teren și date de alte tipuri prin conectarea operatorii aritmetici, șir, logici și alți. La rândul său, expresii pot fi combinate prin operatori în expresii mai complexe (compozite). Suporturile rotunde sunt utilizate pentru a gestiona procedura de calcul al expresii.

Operatori logici Și, sau nu și funcții Au fost revizuite mai devreme.

Operatori aritmetici:

  • + - adăugare;
  • - - scăderea;
  • * - multiplicare;
  • / - Divizia.

String operator. Numai unul este un operator de concatenare sau un șir de lipire (| |). În unele implementări SQL (de exemplu, Microsoft Access), în loc de (| |), simbolul (+) este utilizat. Operatorul de conținut atribuie un al doilea șir până la sfârșitul primului exemplu, expresie:

"Sasha" | | "Iubeste" | | "Masha"

se va întoarce ca rezultat al șirului "Sashubit Masha".

La realizarea expresiilor, este necesar să se asigure că operatorii operanți au tipuri admise. De exemplu, expresia: 123 + "Sasha" este inacceptabilă deoarece operatorul de adiție aritmetică este aplicat operandului de șir.

Expresiile calculate pot fi după instrucțiunea SELECT, precum și în condițiile de funcționare a operatorilor HaviNg.

Luați în considerare mai multe exemple.

Lăsați tabelul de vânzări să conțină coloanele de tip de tip, cantitatea și prețul și trebuie să cunoaștem veniturile pentru fiecare tip de produs. Pentru aceasta, este suficient în lista de coloane după operatorul selectat Porniți cantitatea de expresie * Preț:

Selectați Type_Dashovar, Cantitate, Pret, Cantitate * PretLa fel de

Total de la vânzare;

Utilizează cuvântul cheie drept (AS) pentru a seta un pseudonim de coloană cu date calculate.

În fig. 10 prezintă tabelul sursă de vânzare și tabelul de rezultate al interogării.

Smochin. 10. Cerere rezultă cu calcularea veniturilor pentru fiecare tip de bunuri

Dacă doriți să cunoașteți veniturile generale din vânzarea tuturor bunurilor, este suficientă pentru a aplica următoarea interogare:

Selectați suma. (Cantitate * preț) de la vânzare;

Următoarea interogare conține expresii calculate și în lista coloanelor și în starea operatorului în care operatorul. Alege din tabelul de vânzare bunurile, venituri din vânzarea a căror mai mare de 1000:

Selectați Type_tovar, Cantitate * Preț ca totală

De la vânzare

Unde numărul * preț\u003e 1000;

Să presupunem că trebuie să obțineți o masă în care două coloane:

Bunuri care conțin tipul de bunuri și prețul;

Veniturile totale conținând veniturile.

Deoarece se presupune că în tabelul sursă al coloanei de vânzare Type_lovar este simbolic (caractere), iar coloana de preț este numerică, atunci când combinați (lipirea) datelor din aceste coloane, este necesar să se aducă un tip numeric simbolul folosind funcția turnată (). Cererea care efectuează această sarcină arată astfel (figura 11):

Selectați Type_stovar | | "(Pret:" | Cast (preț ca char (5)) | | ")" ca produs, cantitate * Preț ca total

De la vânzare;

Smochin. 11. Solicitați rezultatul cu o Uniune a datelor bazei de date într-o singură coloană

Notă. În Microsoft Access, o cerere similară va avea următorul formular:

Selectați Type_stovar + "(Preț:" + CStr. (Preț) + ")" ca produs,

Cantitate * Preț ca total

De la vânzare;

Expresii convenționale cu operator de caz

În limbile de programare obișnuită există operatori de tranziție condiționată care vă permit să controlați procesul de calcul în funcție de faptul că aveți sau nu o anumită condiție. În limba SQL, un astfel de operator este cazul (caz, circumstanță, copie). În SQL: 2003, acest operator returnează o valoare și, prin urmare, poate fi utilizat în expresii. Are două forme principale pe care le vom lua în considerare în această secțiune.

Operatorul de caz cu valori

Operatorul de caz cu valori are următoarea sintaxă:

Case checked_new

Când valoarea1, atunci rezultatul1

Când valoarea este 0, atunci resuletat2

. . .

Când meniul n, atunci rezultatul n

Altceva rezultate

În cazul în care verificat La fel de valoare1. , Operatorul de caz returnează valoarearezultatul1 , Specificat după cuvântul cheie, atunci. În caz contrar, verificarea verificabilă cusens2. și dacă sunt egale, atunci valoarea rezultatului2 este returnată. În caz contrar, valoarea verificată este comparată cu următoarea valoare indicată după cuvântul cheie (când), etc Dacă valoarea verificabilă nu este egală cu una dintre aceste valori, atunci valoarea este returnatărezultat X. indicat după cuvântul cheie (altfel).

Altceva cuvânt cheie nu este obligatoriu. Dacă lipsește și niciuna dintre valorile care sunt supuse comparațiilor, nu egale cu valoarea valoroasă, operatorul de caz returnează NULL.

Să presupunem că, pe baza tabelului client (vezi figura 1), este necesar să obțineți un tabel în care numele regiunilor sunt înlocuite cu numerele de cod. Dacă în tabelul sursă nu există prea multe regiuni diferite, atunci este convenabil să utilizați cererea cu operatorul de caz pentru a rezolva această sarcină:

Selectați numele, adresa,

Regiunea de caz

Când "Moscova", apoi "77"

Când "Regiunea Tver", apoi "69"

. . .

Altceva regiune

Ca cod de regiune

De la clienți;

Operatorul de caz cu termeni de căutare

A doua formă a operatorului de caz își asumă utilizarea atunci când se caută în tabelul acestor înregistrări care satisfac o anumită condiție:

Caz.

Când condiția 1, atunci rezultatul1

Când Wai2, apoi rezultatul2

. . .

Când condiția n, atunci rezultatul n

Altceva rezultate

Operatorul de caz verifică dacă condiția1 este valabilă pentru prima intrare din setul definit de operatorul în cazul în care operatorul, sau în întregul tabel, dacă nu există unde. Dacă da, caz returnează valoarea rezultatului1. În caz contrar, o condiție2 este verificată pentru această înregistrare. Dacă este adevărat, valoarea rezultatului2 este returnată etc. Dacă niciuna dintre condițiile nu este executată, atunci valoarea este returnată.X. arătat după cheia cuvântului altceva.

Altceva cuvânt cheie nu este obligatoriu. Dacă lipsește și nu se efectuează nici una dintre condiții, operatorul de caz rotește nul. După ce carcasa care conține operatorul este executată pentru prima înregistrare, merge la următoarea înregistrare. Astfel continuu până când întregul set de înregistrări este procesat.

Să presupunem că, în tabelul de carte (numele, prețul), coloana este nulă dacă cartea corespunzătoare nu este disponibilă. Următoarea solicitare returnează un tabel în care textul "nu este disponibil" în loc de NULL:

Selectați Nume

Caz.

Când prețul este nul, atunci "în afara stocului"

Alte Cuturi (preț ca char (8))

Ca preț

Din cărți;

Toate valorile aceleiași coloane trebuie să aibă aceleași tipuri. Prin urmare, această interogare utilizează funcția de conversie a tipului de turnare pentru a aduce numărul de valori ale coloanei. Prețul la tipul simbolic.

Rețineți că în loc de primul formular, operatorul de caz poate fi utilizat întotdeauna al doilea:

Caz.

Când versement_venue \u003d valoarea1, apoi rezultatul1

Când versement_vense \u003d valoarea2, apoi rezultatul2

. . .

Când versement_vense \u003d valoareN apoi pseltytn.

Altfel resolată

Nullif și funcții de coalesce

În unele cazuri, în special în cererile de actualizare a datelor (operator de actualizare), este convenabil să se utilizeze funcții mai compacte nullif () (, dacă) și coalesce () (, dacă) și coalesce ().

Funcția Nullif ( ceea ce înseamnă1, valoare2.) Returnează NULL Dacă valoarea primului parametru corespunde valorii celui de-al doilea parametru, în caz de inconsecvențe, valoarea primului parametru este returnată neschimbată. Aceasta este, dacă se efectuează valoarea egalității1 \u003d valoarea2, funcția returnează , altfel valoarea valorii1.

Această caracteristică este echivalentă cu operatorul de caz în următoarele două forme:

  • Valoarea cazului1.

Când recomandă2, atunci null

Altfel valoare1.

  • Caz.

Când valoarea1 \u003d valoarea2, atunci nulă

Altfel valoare1.

Caracteristica coalesce ( valoare1, Value2, ...,n valoarea n) acceptă o listă de valori care pot fi specifice și incerte (null). Funcția returnează o valoare specifică din listă sau nulă dacă toate valorile nu sunt definite.

Această caracteristică este echivalentă cu următorul operator de caz:

Caz.

Când valoarea 1 nu este nulă, atunci valoarea 1

Când valoarea 2 nu este nulă, atunci valoarea 2

. . .

Când n nu este nulă, atunci valoarea n

Altceva nul.

Să presupunem că în tabelul de carte (nume, preț), coloana de preț este nulă, dacă cartea corespunzătoare nu este disponibilă. Următoarea solicitare returnează o masă în care în schimbNUL Textul "nu este în stoc":

Selectați Nume, Coasce (Cast (preț ca char (8)),

"Nu este disponibil") ca preț

Din cărți;

SQL - Lecția 11. Funcții totale, coloane calculate și vizualizări

Funcțiile finale sunt numite și statistice, agregate sau însumate. Aceste funcții gestionează un set de rânduri pentru numărarea și returnarea unei valori. Există doar cinci astfel de funcții:
  • AVG () Funcția returnează valoarea medie a coloanei.

  • COUNT () Funcția returnează numărul de rânduri din coloană.

  • Max () Funcția returnează cea mai mare valoare din coloană.

  • Min () Funcția returnează cea mai mică valoare din coloană.

  • Suma () Funcția returnează cantitatea de valori ale coloanei.

Cu unul dintre ei - numără () - am întâlnit deja În lecția 8. . Acum hai să ne familiarizăm cu restul. Să presupunem că am vrut să învățăm prețul minim, maxim și mediu al cărților din magazinul nostru. Apoi, de la tabelul de preț (prețurile) trebuie să ia valoarea minimă, maximă și medie a coloanei. Solicitați simplu:

Selectați min (preț), max (preț), AVG (preț) de la prețuri;

Acum, vrem să știm cât de mult ne-a adus furnizorul "Casa de imprimare" (ID \u003d 2). Face o astfel de cerere nu este atât de simplă. Să ne gândim cum să o facem:

1. În primul rând, trebuie să selectați identificatorii (ID_INCOMING) a acelor consumabile din tabelul de livrare (ID_INCOMING) (ID \u003d 2) de la consumabile (ID \u003d 2):

2. Acum, din tabelul Log (Magazine_incoming), trebuie să alegeți bunuri (ID_PRODUCT) și cantitate (cantitate), care au fost găsite în punctele de alimentare de la alineatul (1). Adică cererea de la alineatul (1) devine încorporată:

3. Acum trebuie să adăugăm prețurile la tabelul rezultat pentru produsele găsite care sunt stocate în tabelul de preț (prețurile). Adică, va trebui să combinăm tabelele de aprovizionare (Magazine_incoming) și prețurile (prețurile) pe coloana ID_PRODUCT:

4. Tabelul rezultat nu are în mod clar suma coloanei, adică coloana calculată. Abilitatea de a crea astfel de coloane este furnizată în MySQL. Pentru a face acest lucru, trebuie doar să specificați numele coloanei calculate în interogare și ce trebuie să calculeze. În exemplul nostru, această coloană va fi numită Summa și va calcula că va fi un produs al coloanelor și prețului cantității. Numele noii coloane este separat de cuvânt ca:

Selectați Magazine_incoming.Id_Product, Magazine_incoming.quantity, prețs.Price, Magazine_incoming.quantity * preturi.Price ca Summa de la Magazine_incoming, prețurile în cazul în care magazinul_incoming.id_product \u003d prețs.id_product și id_incoming \u003d (Selectați Id_incoming de la ID_Vendor \u003d 2);

5. Excelent, trebuie doar să rezumăm coloana Summa și să aflăm în cele din urmă ce sumă a adus furnizorul de bunuri "Casa de imprimare". Sintaxă pentru a utiliza funcția Sum ():

Selectați suma (numele Shumbace) de la name_table;

Știm numele coloanei - Summa, dar nu avem numele tabelului, deoarece este rezultatul interogării. Ce să fac? Pentru astfel de cazuri în MySQL există vederi. Vizualizarea este o cerere de selecție care i se atribuie un nume unic și care poate fi salvat în baza de date pentru utilizare ulterioară.

Sintaxa creației de reprezentare este după cum urmează:

Creați un nume reprezentativ de vizualizare ca interogare;

Să salvăm cererea noastră ca vizualizare numită Raport_vendor:

Creați Vizualizare Raporter_Vendor ca selecție Magazine_incoming.id_product, Magazine_incoming.quantity, prețs.Price, Magazine_incoming.quantity * prețs.price ca summa de la magazin_incoming.id_product \u003d prețs.id_product și id_incoming \u003d (selectați id_incoming de la intrarea în cazul în care id_venor \u003d 2 );

6. Acum puteți utiliza funcția suma totală ():

Selectați suma (Summa) de la Raport_vendor;

Așa că am realizat rezultatul, adevărul pentru aceasta a trebuit să folosim cereri, asociații, coloane și prezentări calculate. Da, uneori pentru a obține rezultatul, este necesar să se gândească fără ea oriunde. Dar am atins două subiecte foarte importante - coloane și prezentări calculate. Să vorbim despre ele în detaliu.

Câmpuri calculate (coloane)

Pe exemplu, ne-am uitat astăzi la câmpul calculat matematic. Aici aș dori să adaug că este posibil să se utilizeze nu numai funcționarea multiplicării (*), ci și scăderea (-) și adăugarea (+) și diviziunea (/). Sintaxa este după cum urmează:

Selectați_name_stolbet_1, _stolbet_name_2, _stolbet_name_1 * _name_22 as_name_stolbet_stolbet_name_table;

A doua nuanță este cuvântul cheie, l-am folosit pentru a seta numele coloanei calculate. De fapt, cu ajutorul acestui cuvânt cheie, pseudonimele sunt definite pentru orice coloane. Pentru ce ai nevoie? Pentru a reduce și a citi codul. De exemplu, reprezentarea noastră ar putea arăta astfel:

Creați Vizualizare raport_vendor ca selectați A.Id_Product, A.Quantity, B.Price, A.Quality * B.Price ca Summa de la Magazine_incoming ca A, prețurile ca A.Id_product \u003d B.ID_PRODUCT ȘI ID_INCOMING \u003d (Selectați id_incoming de la intrare Unde id_venor \u003d 2);

Sunt de acord că este mult mai scurtă și mai clară.

Reprezentare

Sintaxa creării reprezentărilor a fost deja luată în considerare. După crearea de vederi, ele pot fi utilizate în același mod ca și tabelele. Adică, efectuați cereri pentru ele, filtrați și sortați datele, combinați unele viziuni cu alții. Pe de o parte, aceasta este o modalitate foarte convenabilă de a stoca interogări complexe componente (ca în exemplul nostru).

Dar trebuie amintit că opiniile nu sunt o masă, adică nu stochează date, ci doar să le extragă din alte mese. De aici, în primul rând, la schimbarea datelor în tabele, rezultatele prezentării se vor schimba, de asemenea. Și în al doilea rând, atunci când solicitați o vedere, se găsesc datele necesare, adică performanța DBMS scade. Prin urmare, nu este necesar să le abuzați.

Funcția sumară în limba SQL, în ciuda simplității sale, este utilizată destul de des atunci când lucrează cu baza de date. Cu aceasta, este convenabil să obțineți unele rezultate intermediare sau finale, fără a recurge la ajutorul instrumentelor subsidiare ale DBMS.

Funcția de sintaxă

În majoritatea limbajelor SQL, sintaxa Sum este aceeași - numai numele câmpului sau un efect aritmetic al mai multor dintre aceștia sunt utilizați ca argument, ceea ce necesită sumare.

În cazuri excepționale, este posibilă transmiterea unei valori specifice sub forma unui număr sau a unei variabile, totuși, astfel de "scheme" sunt practic utilizate, deoarece acestea nu transportă o mare valoare. Mai jos este sintaxa funcției SQL:

suma (a) - aici ca parametru A folosit o valoare sau o expresie numerică

Este demn de remarcat faptul că în fața parametrului puteți seta cuvintele cheie, de exemplu, distinct sau toate, care va lua numai valori unice sau toate valorile.

Exemplu de utilizare a sumelor în SQL

Pentru înțelegerea finală a principiului funcționării funcției, merită luarea în considerare a mai multe exemple. Suma SQL poate fi utilizată atât ca rezultat returnat, cât și rolul unei valori intermediare, de exemplu, pentru a verifica starea.

Pentru primul caz, luați în considerare opțiunea atunci când doriți să returnați suma vânzărilor pentru fiecare produs, având în vedere că numărul de achiziții efectuate poate fi într-o plurală. Pentru a obține rezultatul, acesta va fi suficient pentru a efectua următoarea interogare:

Selectați produsul, suma (total) din vânzarea de bunuri de vânzare;

Răspunsul la această comandă va fi o listă unică de produse cu suma finală de cumpărare pentru fiecare dintre ele.

Pentru al doilea exemplu, este necesar să se obțină o listă de produse, valoarea vânzărilor prin care a depășit o anumită valoare, de exemplu, 100. Este posibil să se obțină rezultatul acestei sarcini în mai multe moduri, dintre care cele mai optime este executarea unei cereri:

Selectați produsele din (selectați produs, suma (total) ca sumă din vânzare) unde suma\u003e 100.

În acest tutorial veți învăța cum să utilizați MySQL funcția de sumă cu sintaxă și exemple.

Descriere

Funcția MySQL. SUMĂ. Returnează valoarea totală a expresiei.

Sintaxă

MySQL Sintax Sum Funcții:

Sau funcții de sintaxă mySQL atunci când grupați rezultatele pentru una sau mai multe coloane:

Parametri sau argumente

expresie1, Expresie2, ... expresie_n - expresii care nu sunt încapsulate în funcția sumară și trebuie să fie incluse în grup prin ofertă la sfârșitul operatorului SQL.

aggregate_expression este o coloană sau o expresie care va fi rezumată.

tabele - tabele din care doriți să primiți înregistrări. Trebuie să existe cel puțin un tabel specificat în clauza din clauză.

Unde condițiile - opțional. Acestea sunt condițiile care trebuie completate pentru intrările selectate.

Aplicație

Funcția sumă poate fi utilizată în următoarele versiuni ale MySQL:

  • MySQL 5.7, MySQL 5.6, MySQL 5.5, MySQL 5.1, MySQL 5.0, MySQL 4.1, MySQL 4.0, MySQL 3.23

Un exemplu cu o singură expresie

Luați în considerare exemplele funcțiilor MySQL ale sumei de a înțelege modul de utilizare a funcției sumei în MySQL.

De exemplu, trebuie să aflați ce salariu general cumulativ al tuturor angajaților a căror salariu depășește 20.000 de dolari pe an.

În acest exemplu, funcția sumară, expresia sumei (salariul) a fost atribuită pseudonimului "salariul total". Ca rezultat, la returnarea unui set de rezultate, salariul total va fi afișat ca nume de câmp.

Exemplu cu utilizarea distinctă

Puteți utiliza oferta distinctă în funcția sumară. De exemplu, declarația SQL returnează salariul total combinat al salariilor unice, unde salariul este mai mare de 20.000 de dolari pe an.

Dacă două salarii au fost de 10.000 de dolari pe an, numai una dintre aceste valori ar fi folosită în funcția sumară.

Exemplu utilizând formula

Expresia conținută în funcția sumei nu trebuie să fie un câmp. De asemenea, puteți utiliza formula. De exemplu, puteți calcula Comisia Generală.

Mysql.

Selectați suma (vânzări * 0.05) ca "comisie totală" din comenzi;

Selectați suma (vânzări * 0.05) ca "comisie totală"

De la ordine;

Exemplu utilizând grupul de către

În unele cazuri, va trebui să utilizați grupul cu livrare cu funcția de sumă.

De exemplu, puteți utiliza funcția sumară pentru a returna departamentul și suma totală a vânzărilor (vânzări în departamentul corespunzător).



Ți-a plăcut articolul? Împărtășește-l