A função AVG retorna a média (meio aritmético) dos valores de expressão de entrada. A função AVG funciona com valores numéricos e ignora valores NULL.
Sintaxe
AVG ( [ DISTINCT | ALL ] expression )
Argumentos
- expressão
-
A coluna ou expressão de destino na qual a função opera. A expressão é um destes tipos de dados:
SMALLINT
INTEGER
BIGINT
NUMERIC
DECIMAL
REAL
DOUBLE PRECISION
SUPER
- DISTINCT | ALL
-
Com o argumento DISTINCT, a função elimina todos os valores duplicados da expressão especificada antes de calcular a média. Com o argumento ALL, a função retém todos os valores duplicados da expressão especificada para calcular a média. ALL é o padrão.
Tipos de dados
Os tipos de argumento compatíveis com a função AVG são SMALLINT, INTEGER, BIGINT, NUMERIC, DECIMAL, REAL, DOUBLE PRECISION e SUPER.
Os tipos de retorno compatíveis com a função AVG são:
-
BIGINT para qualquer tipo argumento de inteiro
-
DOUBLE PRECISION para um argumento de ponto flutuante
Retorna o mesmo tipo de dados da expressão para qualquer outro tipo de argumento.
A precisão padrão para o resultado de uma função AVG com um argumento NUMERIC ou DECIMAL é 38. A escala do resultado é a mesma que a escala do argumento. Por exemplo, uma AVG de uma coluna DEC(5,2) retorna um tipo de dado DEC(38,2).
Exemplos
Encontre a quantidade média vendida por transação na tabela SALES:
select avg(qtysold)from sales;
avg
-----
2
(1 row)
Encontre o preço total médio listado para todas as ofertas:
select avg(numtickets*priceperticket) as avg_total_price from listing;
avg_total_price
-----------------
3034.41
(1 row)
Encontre o preço médio pago, agrupado por mês em ordem descendente:
select avg(pricepaid) as avg_price, month
from sales, date
where sales.dateid = date.dateid
group by month
order by avg_price desc;
avg_price | month
-----------+-------
659.34 | MAR
655.06 | APR
645.82 | JAN
643.10 | MAY
642.72 | JUN
642.37 | SEP
640.72 | OCT
640.57 | DEC
635.34 | JUL
635.24 | FEB
634.24 | NOV
632.78 | AUG
(12 rows)