Returnează varianța valorilor unei expresii într-un grup
Mai jos sunt mai multe descrieri detaliate ale tuturor funcțiilor agregate cu informații specifice despre caracteristicile de utilizare, exemple și tipuri de date de intrare valide. În următoarele descrieri, termenul expresie înseamnă orice identificator din setul sumar sau orice expresie validă care efectuează o operație cu acest identificator.
Când se numește o funcție agregată, o expresie agregată este transmisă intrărilor create de comanda SELECT. În structura lor, expresiile agregate sunt similare cu expresiile SQL normale, dar pot începe cu ALL keyword sau DISTINCT.
Dacă este specificat cuvântul cheie DISTINCT, funcția gestionează numai grupurile cu valori unice ale expresiei agregate; grupurile cu valori duplicate sunt ignorate. Cuvântul ALL, ca și în comanda SELECT, arată doar explicit că expresia se aplică tuturor grupurilor. În lista 5.19 sunt prezentate exemple de diferite forme de expresii agregate.
Listing 5.19. Utilizarea expresiilor agregate
booktown = # SELECT count (locație) AS setjocations,
booktown- # count (TOATE locațiile) AS all_set_locations,
booktown- # count (locația DISTINCT) AS unique_locations,
booktown- # count (*) AS all_rows booktown- # SUB subiecte;
setjocations | toate_set_locațiile | uniquejocations all_rows
Expresiile agregate au, de asemenea, o formă specială, prezentată în coloana al_rows a rezultatului din Lista 5.19. Dacă un asterisc (*) este transmis la apelarea funcției agregate, aceasta înseamnă că funcția trebuie să se ocupe de toate câmpurile, inclusiv câmpurile ignorate în mod normal cu valori NULL. Deoarece tabela de subiecte conține o înregistrare cu un câmp de localizare egal cu NULL, rezultatul înregistrărilor de numărare pentru câmpul 1 ocati diferă de rezultatul numărării cu același zero utilizând simbolul *.
Intrările care au în exprimarea globală include un NULL, nu sunt prelucrate de funcții agregate (excepție este funcția count ().
Funcția avg () primește o expresie agregată a cărei rezultat se referă la oricare dintre tipurile numerice (numeric, bigint, smallint, real sau dublu de precizie) sau la tipul de interval.
Funcția returnează media aritmetică a tuturor datelor descrise de expresie. Valoarea returnată se referă la tipul numeric pentru o expresie de tip întreg sau la tipul de precizie dublă pentru o expresie de tip real. În toate celelalte cazuri, tipul de returnare este același cu tipul expresiei.
booktown = # SELECT avg (cost) AS medie_cost,
booktown- # avg (cu amănuntul) AS medie_price,
booktown- # avg (cu amănuntul-cost) ca medie_profit
booktown- # FROM stoc:
media_cost | media_price | average_prof1t
24,8235294118 | 30.0088235294 5.1852941176
x> oktown = # SELECT AVG (cost)
AS average_cost, p.name AS editor
booktown- # FROM din stoc ediții JOIN USING (isbn))
booktown-l editori JOIN AS p (publisheMd)
booktown- # USING (publisheMd)
booktown- # GROUP BY p.name;
26,5000000000 | Ace cărți
19,0000000000 | Cărți de minune
26.5000000000 I Dublu
18,0000000000 | Henry Holt Companie. Inc
23.0000000000 I Kids Can Press
23,0000000000 | Mojo Press
20.0000000000 I Penguin
23.0000000000 Casă aleatoare
26,0000000000 | Publicații Watson-Guptill
Funcția countO returnează numărul de valori pentru care expresia este diferită de NULL. Tipul de expresie nu este limitat. Rețineți că funcția count () calculează numai valori diferite de NULL, astfel încât pentru a obține rezultate semnificative, expresia folosită nu trebuie să returneze NULL pentru înregistrările numărate.
Dacă numărul () este trecut de caracterul *, funcția numără pur și simplu toate înregistrările, inclusiv cele care conțin NULL.
booktown = # SELECT countC *) DIN ediții;
booktown = # SELECT count (isbn). p.name
booktown- # FROM ediții JOIN editori AS p (publisheMd)
booktown- # USING (publisheMd)
booktown- # GROUP BY p.name
booktown- # ORDER BY count DESC;
3 | Casa aleatorie
1 | Cărți de minune
1 | Henry Holt Companie. Inc
1 | Copiii pot apăsa
1 | O'Reilly Associates
1 | Publicații Watson-Gupti11
Funcția max () returnează valoarea maximă a expresiei specificate în grup. Rezultatul unei expresii poate fi valoarea oricărui tip numeric sau de tip șir, precum și tipul de dată sau de timp. Tipul de returnare este același cu tipul expresiei.
booktown = # SELECT max (cost), max (cu amănuntul) din stoc;
booktown = # SELECT max (cu amănuntul), p.name
booktown- # FROM (ediții stoc JOIN NATURAL)
booktown- # JOIN editori AS p (publisher_id)
booktown- # USING (publisherjd)
booktown- # GROUP BY p.name
booktown- # ORDER BY max DESC;
45.95 i cărți Ace 36.95 Doubleday 32.95
Casa aleatorie 28.95 HarperCollins
28.95 I Publicații Watson-Guptill
24,95 | Mojo Press
23.95 1 Henry Holt Companie. Inc 23.95
Copiii pot face presă 21.95 Cărți de minune
Funcția min () returnează valoarea minimă a expresiei specificate în grup. Rezultatul unei expresii poate fi valoarea oricărui tip numeric sau de tip șir, precum și tipul de dată sau de timp. Tipul de returnare este același cu tipul expresiei.
booktown = # SELECT min (cost). min (cu amănuntul) din stoc;
booktown = # SELECT min (cu amănuntul), p.name
booktown- # FROM (ediții stoc JOIN NATURAL)
booktown- # JOIN editori AS p (publisheMd)
booktown- # USING (publisheMd)
booktown-l GROUP BY p.name
booktown- # ORDER BY min ASC;
16,95 | Casa aleatorie
21.95 Cărți de minuni
23,95 | Henry Holt Companie. Inc
23,95 | Copiii pot apăsa
24,95 | Mojo Press
28.95 I HarperCollins
28,95 | Publicații Watson-Guptill
stddev La primirea expresiei funcției care descrie valorile oricărui tip numeric (cu numeri, bigi nt, smal 1 i nt, real sau doubl e preci si pe), și returnează deviația standard pentru grup. Pentru expresii reale, rezultatul este returnat ca valoare dublă de precizie, iar pentru alte tipuri, ca valoare numerică.
booktown = # SELECT stddev (cu amănuntul) din stoc;
booktown = # SELECT stddev (cu amănuntul), p.name
booktown- # FROM (ediții stoc JOIN NATURAL)
booktown- # JOIN editori AS p ON (publisheMd = p.id)
booktown- # GROUP BY p.name
booktown- # ORDER BY stddev DESC
booktown- # LIMIT 4:
16,97 | Ace cărți
16,97 | Roc 8.02 Casa aleatoare
Suma funcției () primește o expresie care descrie valorile oricărui tip numeric (numeric, bigint, smallint, real sau dublu de precizie) și returnează suma valorilor din grup. Pentru expresiile de tip integer, rezultatul este returnat ca valoare numerică, iar pentru expresii reale, ca valoare dublă de precizie. În toate celelalte cazuri, tipul de returnare este același cu tipul expresiei.
booktown = # SELECT suma (stoc) din stoc;
booktown = # SELECT suma (stoc). s.subject
booktown- # FROM ((ediții de inventar NATURAL JOIN)
booktown (# JOIN cărți ON (books.id = bookjd))
booktown-f JOIN subiecte AS s
booktown- # ON (books.subject_id = s.id)
booktown- # GROUP BY s.subject
booktown- # ORDER BY suma DESC;
166 I Science Fiction
91 | Cărți pentru copii
variance () funcție primește o expresie care descrie valorile de orice tip numeric (numeric, bigint, int mici, reale sau dublă precizie) și returnează varianța pentru banda (stddevO pătrat). Pentru expresii reale, rezultatul este returnat ca valoare de tip dublu de precizie, iar pentru alte tipuri - ca valoare numerică.
booktown = # SELECT varianta (retaiT) din stoc;
booktown = # SELECT varianceCretail), p.name
booktown- # FROM (ediții stoc JOIN NATURAL)
booktown- # JOIN editori AS p
booktown- # ON (ediții.pub! isher_id = p.id)
booktown- # GROUP BY p.name
booktown- # ORDER BY varianta DESC
booktown- # LIMIT 4: numele varianței
288,00 | Ace Books 288.00 I Roc 64.33.
Casa aleatorie 32.00 | Doubleday