PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Функция AVG() в PostgreSQL

В PostgreSQL, AVG() функцията изчислява средното (средноаритметично) на всички входни стойности, различни от нула, и връща резултата.

Пример

Ето един бърз пример, за да демонстрирате как работи:

SELECT AVG(amount) 
FROM payment;

Резултат:

4.2006673312979002

В този случай amount е колона в payment маса.

За да придадете на това малко повече контекст, ето моментна снимка на таблицата (от pagila примерна база данни):

+------------+-------------+----------+-----------+--------+----------------------------+
| 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 |
...

Можем да видим amount колона, за която изчислихме средната стойност.

Таблицата съдържа много повече редове, но това ви показва пример за стойностите.

Филтрирани резултати

AVG() функцията работи с редовете, върнати от заявката. Така че, ако филтрирате резултатите, резултатът от AVG() ще отрази това.

Нека филтрираме резултатите:

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

Резултат:

3.8233333333333333

Така че този път получихме средната стойност на всички суми, платени от клиента 271.

DISTINCT Ключова дума

Можете да използвате DISTINCT ключова дума с AVG() за изчисляване само на различни стойности. Тоест, ако има дублиращи се стойности, те се третират като една стойност.

Пример:

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

Резултат:

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

В този случай има много голяма разлика между отделните и неразличими резултати. Това предполага, че има много дублиращи се стойности в тази колона.

За да проверим това, можем да изведем различни стойности по следния начин:

SELECT DISTINCT amount
FROM payment;

Резултат:

+--------+
| 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)

Така че нашият пример върна средната стойност на тези различни стойности.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да деактивирам референтната цялост в Postgres 8.2?

  2. Компилиране на разширение mongo_fdw с възможност за запис в двоичен формат на инсталацията на PostgreSQL.

  3. Използване на pyspark за свързване с PostgreSQL

  4. Изключете предупреждението в sqlalchemy

  5. Еквивалент на PostgreSQL DATEADD().