本文主要介绍了如何在数据库查询中根据多个列进行分组并使用聚集函数,特别是针对SQL语言中的GROUP BY子句和HAVING子句的应用。
在数据库管理中,当我们需要对数据进行汇总分析时,经常会用到分组(GROUP BY)函数。这些函数能够对一组数据进行操作,然后为每个分组返回一个结果。例如,标题中的例子展示了如何按照部门(DEPTNO)和职位(JOB)两个列进行分组,计算每个部门内每种工作类型的工资总和(SUM(SAL))。通过这种方式,我们可以快速了解公司中不同部门和职位的薪酬概况。
分组函数包括但不限于:
1. AVG:计算平均值,例如计算所有员工的平均工资。
2. COUNT:统计数量,可以用来获取某个列的记录总数或满足特定条件的记录数。
3. MAX:找出最大值,如最高工资。
4. MIN:找出最小值,如最低工资。
5. STDDEV:计算标准差,衡量数据的波动程度。
6. SUM:求和,如计算部门的总薪资支出。
7. VARIANCE:计算方差,也是衡量数据分散程度的一种方式。
使用分组函数的基本语法如下:
```sql
SELECT [column,] group_function(column)
FROM table
[WHERE condition]
[GROUP BY column]
[ORDER BY column];
```
在这个结构中,`GROUP BY` 子句用于指定按照哪些列进行分组,`HAVING` 子句则用于在分组后筛选满足特定条件的组。例如,如果我们想找出薪资总和超过5000的部门,可以添加一个HAVING子句:
```sql
SELECT DEPTNO, SUM(SAL)
FROM EMP
GROUP BY DEPTNO
HAVING SUM(SAL) > 5000;
```
讲师演示中可能会用到的示例脚本(l5order1.sql 和 l5order2.sql)展示了如何根据不同的列顺序对结果进行排序,比如先按部门排序,再按职位排序,或者反之。
学习这部分内容后,你应该能够理解分组函数的作用,知道如何使用GROUP BY和HAVING子句对数据进行分组和筛选,并能熟练运用常见的分组函数,如AVG、COUNT、MAX、MIN、SUM等,进行数据分析。这对于数据库管理和业务报表的生成至关重要。