跳到主要内容

PostgreSQL 聚合函数

在PostgreSQL中,聚合函数用于对一组值执行计算,并返回单个结果。它们通常与 GROUP BY 子句一起使用,以便对数据进行分组计算。聚合函数在数据分析、统计和生成报告时非常有用。

常见的聚合函数

PostgreSQL 提供了多种聚合函数,以下是一些最常用的:

  • COUNT():计算行数。
  • SUM():计算数值列的总和。
  • AVG():计算数值列的平均值。
  • MIN():查找列中的最小值。
  • MAX():查找列中的最大值。

1. COUNT() 函数

COUNT() 函数用于计算行数。它可以计算所有行,或者仅计算满足特定条件的行。

示例:计算表中的总行数

sql
SELECT COUNT(*) FROM employees;

输出:

 count
-------
100

示例:计算特定条件下的行数

sql
SELECT COUNT(*) FROM employees WHERE department = 'Sales';

输出:

 count
-------
25

2. SUM() 函数

SUM() 函数用于计算数值列的总和。

示例:计算所有员工的工资总和

sql
SELECT SUM(salary) FROM employees;

输出:

   sum
---------
5000000

3. AVG() 函数

AVG() 函数用于计算数值列的平均值。

示例:计算所有员工的平均工资

sql
SELECT AVG(salary) FROM employees;

输出:

        avg
-------------------
50000.000000000000

4. MIN()MAX() 函数

MIN()MAX() 函数分别用于查找列中的最小值和最大值。

示例:查找工资最低和最高的员工

sql
SELECT MIN(salary), MAX(salary) FROM employees;

输出:

 min  |  max
------+-------
30000| 100000

使用 GROUP BY 进行分组计算

聚合函数通常与 GROUP BY 子句一起使用,以便对数据进行分组计算。

示例:按部门计算平均工资

sql
SELECT department, AVG(salary) 
FROM employees
GROUP BY department;

输出:

 department |        avg
------------+-------------------
Sales | 45000.000000000000
Engineering| 60000.000000000000
HR | 40000.000000000000

实际应用场景

假设你在一家零售公司工作,需要生成一份报告,显示每个产品类别的总销售额。

示例:按产品类别计算总销售额

sql
SELECT category, SUM(sales) 
FROM products
GROUP BY category;

输出:

 category |  sum
----------+-------
Electronics | 500000
Clothing | 300000
Home | 200000

总结

PostgreSQL 的聚合函数是处理和分析数据的强大工具。通过使用 COUNT()SUM()AVG()MIN()MAX() 等函数,你可以轻松地对数据进行汇总和计算。结合 GROUP BY 子句,你可以进一步对数据进行分组分析。

提示

提示:在使用聚合函数时,确保你理解数据的结构和需要计算的内容。合理使用 GROUP BY 可以帮助你更有效地分析数据。

附加资源

练习

  1. 编写一个查询,计算每个部门的员工数量。
  2. 编写一个查询,找出每个产品类别的最高销售额。
  3. 编写一个查询,计算所有员工的平均工资,并按部门分组。

通过完成这些练习,你将更好地掌握 PostgreSQL 聚合函数的使用。