openGauss学习笔记-21 openGauss 简单数据管理-GROUP BY子句
发布人:shili8
发布时间:2025-03-13 21:45
阅读次数:0
**OpenGauss 学习笔记 -21**
**简单数据管理 - GROUP BY 子句**
在前面的章节中,我们已经学习了如何使用 OpenGauss 进行基本的 SQL 操作,如 SELECT、INSERT、UPDATE 和 DELETE 等。然而,在实际的数据库应用中,往往需要对数据进行聚合和统计分析,这就是 GROUP BY 子句的作用。
**GROUP BY 子句**
GROUP BY 子句用于将结果集分组,并对每个组执行聚合函数(如 SUM、AVG、MAX、MIN 等)。它可以帮助我们快速地获取数据的总体趋势和特征。
**示例1 - 简单 GROUP BY**
假设我们有一个名为 `employees` 的表,包含员工信息,如下所示:
| id | name | age | salary |
| --- | --- | --- | --- |
|1 | 张三 |25 |5000 |
|2 | 李四 |30 |6000 |
|3 | 王五 |28 |5500 |
|4 | 小明 |22 |4500 |
我们想知道每个年龄组的平均工资。可以使用以下 SQL语句:
sqlSELECT age, AVG(salary) AS avg_salaryFROM employeesGROUP BY age;
结果集如下:
| age | avg_salary |
| --- | --- |
|22 |4500 |
|25 |5000 |
|28 |5500 |
|30 |6000 |
**示例2 - GROUP BY 和 HAVING**
假设我们有一个名为 `orders` 的表,包含订单信息,如下所示:
| id | customer_id | order_date | total_amount |
| --- | --- | --- | --- |
|1 |1 |2020-01-01 |100 |
|2 |1 |2020-02-01 |200 |
|3 |2 |2020-03-01 |300 |
|4 |3 |2020-04-01 |400 |
我们想知道每个客户的总订单金额超过500 的客户。可以使用以下 SQL语句:
sqlSELECT customer_id, SUM(total_amount) AS total_ordersFROM ordersGROUP BY customer_idHAVING SUM(total_amount) >500;
结果集如下:
| customer_id | total_orders |
| --- | --- |
|1 |300 |
**示例3 - GROUP BY 和 ORDER BY**
假设我们有一个名为 `employees` 的表,包含员工信息,如下所示:
| id | name | age | salary |
| --- | --- | --- | --- |
|1 | 张三 |25 |5000 |
|2 | 李四 |30 |6000 |
|3 | 王五 |28 |5500 |
|4 | 小明 |22 |4500 |
我们想知道每个年龄组的平均工资,按降序排列。可以使用以下 SQL语句:
sqlSELECT age, AVG(salary) AS avg_salaryFROM employeesGROUP BY ageORDER BY avg_salary DESC;
结果集如下:
| age | avg_salary |
| --- | --- |
|30 |6000 |
|28 |5500 |
|25 |5000 |
|22 |4500 |
**总结**
GROUP BY 子句是 OpenGauss 中一个非常重要的功能,它可以帮助我们快速地获取数据的总体趋势和特征。通过使用 GROUP BY 子句,我们可以对数据进行聚合和统计分析,得到更准确的结果。