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
2
SELECT SUM(quantity) AS total_quantity
FROM sales;

执行后,结果将是:

total_quantity
48

计算销售额

为了计算销售额,我们需要将每个产品的 quantityprice_per_unit 相乘,然后再求和。这可以通过结合 SUM() 函数与计算表达式来实现。

1
2
SELECT SUM(quantity * price_per_unit) AS total_sales
FROM sales;

结果显示所有销售的总金额:

total_sales
1340.00

使用其他聚合函数

聚合函数并不止于求和,我们还可以计算平均值、最大值和最小值。例如,计算每种产品的平均售价:

1
2
SELECT AVG(price_per_unit) AS average_price
FROM sales;

结果将是各产品的平均售价:

average_price
25.00

要找出销售历史中的最高销售量记录,可以使用 MAX() 函数:

1
2
SELECT MAX(quantity) AS max_quantity
FROM sales;

结果如下:

max_quantity
15

使用 GROUP BY 进行分组聚合

通常我们会需要按照某个字段进行分组,例如按 product_name 分组统计每种产品的总销售量和总收入。我们可以结合 GROUP BY 子句来实现。

1
2
3
SELECT product_name, SUM(quantity) AS total_quantity, SUM(quantity * price_per_unit) AS total_sales
FROM sales
GROUP BY product_name;

执行此查询后,结果将显示每种产品的总销售量和总销售额:

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
2
3
4
SELECT product_name, SUM(quantity) AS total_quantity
FROM sales
GROUP BY product_name
HAVING SUM(quantity) > 10;

结果可能如下:

product_name total_quantity
Widget A 25
Widget B 15

总结

本节我们探讨了 PostgreSQL 中的聚合函数,学习了如何使用 SUM()AVG()MAX() 等函数对数据进行汇总和统计。我们还学习了如何结合 GROUP BYHAVING 来进行更复杂的查询。这些技能在数据分析和报告中非常重要。

在下一节中,我们将继续研究数据操作,具体将探讨如何向数据库中插入数据,为后续数据处理打下基础。希望大家能将所学知识灵活应用于实际开发中!

作者

AI免费学习网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论