PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Funzione AVG() in PostgreSQL

In PostgreSQL, il AVG() La funzione calcola la media (media aritmetica) di tutti i valori di input non nulli e restituisce il risultato.

Esempio

Ecco un rapido esempio per dimostrare come funziona:

SELECT AVG(amount) 
FROM payment;

Risultato:

4.2006673312979002

In questo caso, amount è una colonna nel payment tavolo.

Per dare un po' più di contesto, ecco un'istantanea della tabella (dalla pagila database di esempio):

+------------+-------------+----------+-----------+--------+----------------------------+
| payment_id | customer_id | staff_id | rental_id | amount |        payment_date        |
+------------+-------------+----------+-----------+--------+----------------------------+
|      16050 |         269 |        2 |         7 |   1.99 | 2017-01-24 21:40:19.996577 |
|      16051 |         269 |        1 |        98 |   0.99 | 2017-01-25 15:16:50.996577 |
|      16052 |         269 |        2 |       678 |   6.99 | 2017-01-28 21:44:14.996577 |
|      16053 |         269 |        2 |       703 |   0.99 | 2017-01-29 00:58:02.996577 |
|      16054 |         269 |        1 |       750 |   4.99 | 2017-01-29 08:10:06.996577 |
|      16055 |         269 |        2 |      1099 |   2.99 | 2017-01-31 12:23:14.996577 |
|      16056 |         270 |        1 |       193 |   1.99 | 2017-01-26 05:10:14.996577 |
|      16057 |         270 |        1 |      1040 |   4.99 | 2017-01-31 04:03:42.996577 |
|      16058 |         271 |        1 |      1096 |   8.99 | 2017-01-31 11:59:15.996577 |
...

Possiamo vedere l'amount colonna per la quale abbiamo calcolato la media.

La tabella contiene molte più righe, ma questo mostra un esempio dei valori.

Risultati filtrati

Il AVG() La funzione opera sulle righe restituite dalla query. Quindi, se filtri i risultati, il risultato di AVG() lo rifletterà.

Filtra i risultati:

SELECT AVG(amount) 
FROM payment
WHERE customer_id = 271;

Risultato:

3.8233333333333333

Quindi questa volta abbiamo ottenuto la media di tutti gli importi pagati dal cliente 271.

Il DISTINCT Parola chiave

Puoi usare il DISTINCT parola chiave con AVG() calcolare solo valori distinti. Cioè, se sono presenti valori duplicati, vengono trattati come un valore.

Esempio:

SELECT 
    AVG(amount) AS "All",
    AVG(DISTINCT amount) AS "Distinct"
FROM payment;

Risultato:

+--------------------+--------------------+
|        All         |      Distinct      |
+--------------------+--------------------+
| 4.2006673312979002 | 6.1447368421052632 |
+--------------------+--------------------+

In questo caso, c'è una differenza molto grande tra i risultati distinti e non distinti. Ciò suggerisce che ci sono molti valori duplicati in quella colonna.

Per verificarlo, possiamo emettere i valori distinti come questo:

SELECT DISTINCT amount
FROM payment;

Risultato:

+--------+
| amount |
+--------+
|   1.99 |
|   3.98 |
|   7.99 |
|   5.99 |
|  10.99 |
|   2.99 |
|   8.97 |
|   8.99 |
|   3.99 |
|   9.98 |
|  11.99 |
|   7.98 |
|   6.99 |
|   0.00 |
|   4.99 |
|   5.98 |
|   0.99 |
|   1.98 |
|   9.99 |
+--------+
(19 rows)

Quindi il nostro esempio ha restituito la media di quei valori distinti.