Calculele și concluziile în interogări

Domenii de constructii Calculat

In general, pentru a crea un calculat câmpuri (derivate) din lista SELECT trebuie să specifice o limbă de expresie SQL. operații aritmetice de plus sunt utilizate în aceste expresii, scădere, înmulțire și împărțire, precum și funcțiile încorporate ale limbajului SQL. Puteți specifica numele oricărei coloane (câmp) din tabelul sau interogarea, dar utilizați numai numele coloanei din tabelul sau interogarea specificată în lista de la instrucțiunile de clauza corespunzătoare. În construcția de expresii complexe pot avea nevoie de aparat dentar.

standarde SQL permit specifică în mod explicit numele coloanelor din tabel rezultat, care a folosit expresia AS.

Exemplul 6.1. Calculați costul total pentru fiecare tranzacție. Această interogare folosește metoda de calcul a coloanelor rezultate bazate pe expresii aritmetice.

Exemplul 6.1. Se calculează costul total pentru fiecare tranzacție.

Exemplul 6.2. Ia-o listă de companii cu numele și inițialele clientului.

Exemplul 6.2. Obținerea unei liste de companii cu numele și inițialele clientului.

Interogarea utilizată built-stânga. Bucăți în text variabilă cu un caracter la stânga, în acest caz.

Exemplul 6.3. Ia-o listă de produse cu anul și luna de vânzare.

Exemplul 6.3. Obținerea listei de produse cu anul și luna de vânzare.

Interogarea utilizată încorporate în funcțiile de an și lună pentru a evidenția anul și luna a datei.

Utilizarea funcțiilor agregate

Din moment ce se poate obține un număr de date statistice generale cu privire la setul de valori stabilite de ieșire selectate cu ajutorul rezumat (agregat) funcționează în cadrul SQL-interogare.

Aveți următorul rezumat caracteristici cheie:

  • Count (expresie) - specifică numărul de intrări în ieșire set de SQL-interogare;
  • Min / Max (Expression) - determinarea celui mai mic și cel mai mare din multitudinea de valori într-un domeniu al cererii;
  • Durata medie (expresie) - Această funcție vă permite să calculeze media unui set de valori stocate într-un anumit domeniu este selectat de către cererea de scriere. Este aritmetică valoare medie, adică, suma valorilor împărțit la numărul lor.
  • Suma (expresie) - calculează suma unui set de valori cuprinse într-un anumit domeniu de înregistrări selectate de interogare.

Cele mai frecvente expresii sunt numele coloanelor. Expresia poate fi calculată și din valorile mai multe tabele.

Toate aceste funcții operează cu valori într-o singură coloană a tabelului sau expresie aritmetică, și returnează o singură valoare. Funcția COUNT. MIN și MAX sunt aplicabile atât câmpuri numerice și non-numerice, în timp ce SUM și funcțiile AVG poate fi utilizat numai în cazul câmpurilor de numere, cu excepția COUNT (*). În calculul rezultatelor oricăror funcții exclude mai întâi toate valorile nule, atunci operațiunea solicitată se aplică numai valorile rămase, coloana din beton. COUNT Opțiunea (*) - un caz special de utilizarea funcției COUNT. scopul său este de a număra toate rândurile din tabelul de rezultate, indiferent dacă acesta conține gol, duplicate sau orice altă valoare.

În cazul în care, înainte de aplicarea funcției generalizatoare necesară pentru a elimina valorile duplicate ar trebui să fie în fața numelui de coloană în definiția funcției pune cuvântul cheie DISTINCT. Ea nu are nici un sens pentru MIN și MAX. Cu toate acestea, utilizarea acesteia poate afecta rezultatele SUM functii si AVG. Prin urmare, este necesar ca în prealabil să analizeze dacă aceasta ar trebui să fie prezent în fiecare caz. În plus, cuvântul cheie DISTINCT poate fi specificat în orice interogare mai mult decât o dată.

Este important de remarcat faptul că funcțiile agregate pot fi utilizate numai în lista SELECT și ca parte a clauzei HAVING. În toate celelalte cazuri, este inacceptabil. În cazul în care lista din clauza SELECT include funcțiile agregate. și în termeni de căutare de text deconectat GROUP BY. furnizarea de integrare a datelor în cadrul grupului, nici unul dintre elementele listei SELECT nu poate include nici o referire la domeniile, cu excepția situației în care câmpurile apar ca argumente ale funcțiilor agregate.

Exemplul 6.4. Determina primul în ordine alfabetică numele produsului ordine.

Exemplul 6.4. Determinarea unei prime în ordine alfabetică numele mărfurilor.

Exemplul 6.5. Se determină numărul de tranzacții.

Exemplul 6.5. Se determină numărul de tranzacții.

Exemplul 6.6. Se determină cantitatea totală de bunuri vândute.

Exemplul 6.6. Determinarea cantității totale de bunuri vândute.

Exemplul 6.7. Se determină costul mediu al mărfurilor vândute.

Exemplul 6.7. Determinarea prețului mediu al produselor vândute.

Exemplul 6.8. Calculați costul total al mărfurilor vândute.

Exemplul 6.8. Calcularea costului total al mărfurilor vândute.

Clauză GROUP BY

De multe ori în interogări necesare pentru a forma rezultate intermediare, care apar de obicei în apariția frazei de interogare „pentru toată lumea.“. În acest scop, în clauza SELECT este utilizat GROUP BY. Cerere, în care GROUP BY. gruparea cerere este numit, deoarece grupate date obținute prin efectuarea operațiunii SELECT. apoi pentru fiecare grup creează o singură linie de sinteză. SQL standard impune ca grupul SELECT si clauza BY sunt strâns legate. În prezența a SELECT clauza GROUP BY, fiecare element al listei din clauza SELECT trebuie să aibă o singură valoare pentru întregul grup. În plus, clauza SELECT poate include numai următoarele tipuri de elemente: numele câmpurilor, funcția finală. constante și expresii care includ combinații ale elementelor de mai sus.

Toate numele câmpurilor care sunt listate în lista SELECT. Trebuie să fie prezent în grupul de teză BY - cu excepția cazurilor în care numele coloanei este utilizat în funcția agregată. Reciproca nu este, în general adevărat - în clauza GROUP BY poate fi numele coloanelor care nu sunt în lista SELECT.

În cazul în care, în colaborare cu GROUP BY utilizează o clauză WHERE. acesta este procesat mai întâi, iar gruparea sunt supuse numai acele rânduri care satisfac condiția de căutare.

SQL standard se determină că, în timpul gruparea toate valorile lipsă sunt considerate egale. Dacă două rânduri ale tabelului din aceeași coloană grupate conține NULL valoare și valori identice în toate celelalte coloane nevide grupate, acestea sunt plasate în același grup.

Exemplul 6.9. Calculați volumul mediu al achizițiilor efectuate de către fiecare client.

Exemplul 6.9. Calculați volumul mediu al achizițiilor efectuate de către fiecare client.

Expresia „fiecare client“ este reflectată în SQL-interogare sub forma clauzei GROUP BY Klient.Familiya.

Exemplul 6.10. Stabiliți ce sumă vândut pentru fiecare element.

Exemplul 6.10. Determinarea ce sumă vândut pentru fiecare element.

Exemplul 6.11. Contorizarea numărul de tranzacții efectuate de către fiecare firmă.

Exemplul 6.11. Numărarea numărul de tranzacții efectuate de către fiecare firmă.

Exemplul 6.12. Contoriza numărul total de achiziționat pentru produsul fiecărei companii și costul acesteia.

Exemplul 6.12. Numărarea numărul total de achiziționat pentru produsul fiecărei companii și costul acesteia.

Exemplul 6.13. Se determină costul total al fiecărui element pe lună.

Exemplul 6.13. Determinarea costului total al fiecărui element pe lună.

Exemplul 6.14. Se determină costul total al fiecărui element de clasa întâi pentru fiecare lună.

Exemplul 6.14. Determinarea valorii totale a fiecărui element de clasa întâi pentru fiecare lună.

HAVING

Cu recunoscându de toate blocurile de date grupate anterior GROUP BY, a trebui să îndeplinească anumite condiții. Aceasta este o oportunitate suplimentară de a „filtrat“ set de ieșire.

AVÂND condițiile să difere de condițiile în cazul în care:

  • AVÂND exclude din setul de valori rezultantă de grup cu rezultatele date agregate;
  • UNDE exclude din calculul valorilor agregate prin gruparea înregistrărilor care nu îndeplinesc condiția;
  • în căutarea clauza WHERE nu pot fi specificate funcțiile agregate.

Exemplul 6.15. Determina firmei, în care numărul total al tranzacțiilor a depășit trei.

Exemplul 6.15. Determinarea firmelor în care numărul total al tranzacțiilor a depășit trei.

Exemplul 6.16. Imprimați o listă a bunurilor vândute în valoare de mai mult de 10.000 de ruble.

Exemplul 6.16. Lista Concluzie produselor vândute în exces de 10.000 de ruble.

Exemplul 6.17. Imprimați o listă a bunurilor vândute în valoare de mai mult de 10.000, fără a preciza suma.

Exemplul 6.17. Ieșire lista mărfurilor vândute în valoare de mai mult de 10.000, fără a preciza suma.