21 聚合函数
在本章的前一节中,我们探讨了如何使用 JOIN
来关联多个表格的数据。通过连接表,我们可以获取更加丰富的信息,而在聚合分析中,如何总结和统计这些数据变得尤为重要。本节将专注于 PostgreSQL 中的聚合函数及其应用。
什么是聚合函数
聚合函数用于对数据集合进行计算,并返回单一值。常见的聚合函数有:
COUNT()
:返回行数。SUM()
:返回数值列的总和。AVG()
:返回数值列的平均值。MAX()
:返回数值列的最大值。MIN()
:返回数值列的最小值。
这些函数在分析和汇总数据时非常有用。
示例数据集
为了更好地学习聚合函数,我们将使用以下示例表格 sales
,它包含销售记录:
id | product_name | quantity | price_per_unit | sale_date |
---|---|---|---|---|
1 | Widget A | 10 | 20.00 | 2023-01-15 |
2 | Widget B | 5 | 30.00 | 2023-01-16 |
3 | Widget C | 8 | 25.00 | 2023-02-01 |
4 | Widget A | 15 | 20.00 | 2023-02-08 |
5 | Widget B | 10 | 30.00 | 2023-03-07 |
使用聚合函数
计算总销售量
我们可以使用 SUM()
函数来计算某个产品的总销售量。例如,我们要统计所有产品的销售总量:
1 | SELECT SUM(quantity) AS total_quantity |
执行后,结果将是:
total_quantity |
---|
48 |
计算销售额
为了计算销售额,我们需要将每个产品的 quantity
与 price_per_unit
相乘,然后再求和。这可以通过结合 SUM()
函数与计算表达式来实现。
1 | SELECT SUM(quantity * price_per_unit) AS total_sales |
结果显示所有销售的总金额:
total_sales |
---|
1340.00 |
使用其他聚合函数
聚合函数并不止于求和,我们还可以计算平均值、最大值和最小值。例如,计算每种产品的平均售价:
1 | SELECT AVG(price_per_unit) AS average_price |
结果将是各产品的平均售价:
average_price |
---|
25.00 |
要找出销售历史中的最高销售量记录,可以使用 MAX()
函数:
1 | SELECT MAX(quantity) AS max_quantity |
结果如下:
max_quantity |
---|
15 |
使用 GROUP BY
进行分组聚合
通常我们会需要按照某个字段进行分组,例如按 product_name
分组统计每种产品的总销售量和总收入。我们可以结合 GROUP BY
子句来实现。
1 | SELECT product_name, SUM(quantity) AS total_quantity, SUM(quantity * price_per_unit) AS total_sales |
执行此查询后,结果将显示每种产品的总销售量和总销售额:
product_name | total_quantity | total_sales |
---|---|---|
Widget A | 25 | 500.00 |
Widget B | 15 | 450.00 |
Widget C | 8 | 200.00 |
结合 HAVING
筛选聚合结果
在某些情况下,我们可能仅对特定条件下的聚合结果感兴趣。HAVING
子句允许我们根据聚合结果进行筛选。例如,我们想找出销售数量大于 10 的产品:
1 | SELECT product_name, SUM(quantity) AS total_quantity |
结果可能如下:
product_name | total_quantity |
---|---|
Widget A | 25 |
Widget B | 15 |
总结
本节我们探讨了 PostgreSQL 中的聚合函数,学习了如何使用 SUM()
、AVG()
、MAX()
等函数对数据进行汇总和统计。我们还学习了如何结合 GROUP BY
和 HAVING
来进行更复杂的查询。这些技能在数据分析和报告中非常重要。
在下一节中,我们将继续研究数据操作,具体将探讨如何向数据库中插入数据,为后续数据处理打下基础。希望大家能将所学知识灵活应用于实际开发中!