当前位置:实例文章 » 其他实例» [文章]openGauss学习笔记-21 openGauss 简单数据管理-GROUP BY子句

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 子句,我们可以对数据进行聚合和统计分析,得到更准确的结果。

相关标签:学习笔记
其他信息

其他资源

Top