Funcțiile agregate Postgresql

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

Articole similare