2024年6月11日发(作者:)

oracle中group by用法

摘要:

中 Group By 概述

By 的基本语法

By 的常见用法

1.按某一列分组

2.按多列分组

3.使用聚合函数

4.使用 rollup 和 cube

5.使用 having 子句

By 的高级用法

1.去除重复记录

2.分组排序

3.结合其他 SQL 语句

By 在实际应用中的案例

正文:

在 Oracle 数据库中,Group By 是一个非常重要的 SQL 语句组成部

分,它可以帮助我们对查询结果进行分组和汇总。本文将详细介绍 Oracle 中

Group By 的用法,包括基本语法、常见用法、高级用法以及在实际应用中的

案例。

中 Group By 概述

Group By 是 SQL 语句中用于对查询结果进行分组和汇总的关键字。通

过使用 Group By,我们可以将查询结果按照某一列或多个列进行分组,并对

每组数据进行汇总。

By 的基本语法

在 Oracle 中,Group By 的基本语法如下:

```sql

SELECT column1, column2, aggregate_function(column)

FROM table_name

WHERE condition

GROUP BY column1, column2

ORDER BY column1, column2;

```

其中,`aggregate_function` 可以是 `COUNT`、`SUM`、`AVG`、

`MAX`、`MIN` 等聚合函数,`column1` 和 `column2` 是需要分组的列,

`condition` 是查询条件,`ORDER BY` 子句用于对分组后的结果进行排序。

By 的常见用法

接下来,我们将介绍 Group By 的常见用法:

3.1 按某一列分组

```sql

SELECT department, COUNT(employee_id)

FROM employees

GROUP BY department;

```

上述语句将按照 `department` 列对 `employees` 表进行分组,并计算

每个部门的员工数量。

3.2 按多列分组

```sql

SELECT department, job_title, COUNT(employee_id)

FROM employees

GROUP BY department, job_title;

```

上述语句将按照 `department` 和 `job_title` 列对 `employees` 表进行

分组,并计算每个部门、职位的员工数量。

3.3 使用聚合函数

```sql

SELECT department, SUM(salary)

FROM employees

GROUP BY department;

```

上述语句将按照 `department` 列对 `employees` 表进行分组,并计算

每个部门的员工总薪资。

3.4 使用 rollup 和 cube

```sql

SELECT department, SUM(salary)

FROM employees

GROUP BY department

ROLLUP(department);

```

上述语句将按照 `department` 列对 `employees` 表进行分组,并计算

所有部门的员工总薪资。

```sql

SELECT department, SUM(salary)

FROM employees

GROUP BY department, job_title

CUBE(department, job_title);

```

上述语句将按照 `department` 和 `job_title` 列对 `employees` 表进行

分组,并计算所有部门、职位的员工总薪资。

3.5 使用 having 子句

```sql

SELECT department, COUNT(employee_id)

FROM employees

GROUP BY department

HAVING COUNT(employee_id) > 10;

```

上述语句将按照 `department` 列对 `employees` 表进行分组,并筛选

出员工数量大于 10 的部门。

By 的高级用法

除了上述常见用法外,Group By 还有一些高级用法,如下:

4.1 去除重复记录

```sql

SELECT department, COUNT(DISTINCT employee_id)

FROM employees

GROUP BY department;

```

上述语句将按照 `department` 列对 `employees` 表进行分组,并计算

每个部门的不同员工数量。