PostgreSQL avg() 函数使用指南
PostgreSQL avg()
函数是一个聚合函数,它计算一个分组中的所有指定的值的平均值并返回。
avg()
语法
这里是 PostgreSQL avg()
的语法:
avg(expr)
我们通常在 SQLite 中按如下方式使用 avg()
函数:
SELECT avg(expr), ...
FROM table_name
[WHERE ...]
[GROUP BY group_expr1, group_expr2, ...];
参数
expr
- 必需的。一个计算平均值的列名或者表达式。
返回值
PostgreSQL avg()
函数返回一个分组中的所有指定的值的平均值。
avg()
示例
为了演示 PostgreSQL avg()
的用法,我们使用以下 UNION
和 SELECT
语句模拟一个表:
SELECT 'Tim' name, 'Math' subject, 8 grade
UNION
SELECT 'Tim' name, 'English' subject, 9 grade
UNION
SELECT 'Tom' name, 'Math' subject, 7 grade
UNION
SELECT 'Tom' name, 'English' subject, 5 grade;
name | subject | grade
------+---------+-------
Tim | English | 9
Tom | Math | 7
Tim | Math | 8
Tom | English | 5
(4 rows)
这里,我们拥有了关于用户成绩的一些行。其中 name
列中是用户的名称, subject
列中是科目的名称, grade
列中是一个科目的成绩。
如果要获得所有人的平均成绩,请使用以下带有 avg()
函数的语句:
SELECT
avg(t.grade) average_grade
FROM
(
SELECT 'Tim' name, 'Math' subject, 8 grade
UNION
SELECT 'Tim' name, 'English' subject, 9 grade
UNION
SELECT 'Tom' name, 'Math' subject, 7 grade
UNION
SELECT 'Tom' name, 'English' subject, 5 grade
) t;
average_grade
--------------------
7.2500000000000000
(1 row)
如果要获得每个人的平均成绩,请使用以下带有 avg()
函数的语句:
SELECT
t.name,
avg(t.grade) average_grade
FROM
(
SELECT 'Tim' name, 'Math' subject, 8 grade
UNION
SELECT 'Tim' name, 'English' subject, 9 grade
UNION
SELECT 'Tom' name, 'Math' subject, 7 grade
UNION
SELECT 'Tom' name, 'English' subject, 5 grade
) t
GROUP BY t.name;
name | average_grade
------+--------------------
Tim | 8.5000000000000000
Tom | 6.0000000000000000
(2 rows)
这里,我们使用 GROUP BY t.name
子句按照用户的名称进行了分组,并使用 avg(t.grade)
函数计算了对每组中的成绩的平均值。