的查询Oracle查询一个表的分组分析(oracle 一个表分组)
Oracle查询:一个表的分组分析
在Oracle数据库中,经常需要进行数据的汇总和分析,其中一个重要的操作就是分组分析。本文将介绍如何在Oracle中对一个表进行分组分析。
示例表
为了方便说明,我们创建一个示例表。该表名称为“employee”,包含以下字段:
– emp_id: 员工id,数值类型
– dept_id: 部门id,数值类型
– job_title: 员工职位,文本类型
– salary: 员工薪资,数值类型
我们在Oracle中创建该表的SQL语句如下:
CREATE TABLE employee(
emp_id NUMBER,
dept_id NUMBER,
job_title VARCHAR2(50),
salary NUMBER
);
INSERT INTO employee (emp_id, dept_id, job_title, salary)
VALUES (1, 1, ‘Manager’, 10000);
INSERT INTO employee (emp_id, dept_id, job_title, salary)
VALUES (2, 1, ‘Engineer’, 8000);
INSERT INTO employee (emp_id, dept_id, job_title, salary)
VALUES (3, 2, ‘Intern’, 3000);
INSERT INTO employee (emp_id, dept_id, job_title, salary)
VALUES (4, 2, ‘Intern’, 3500);
INSERT INTO employee (emp_id, dept_id, job_title, salary)
VALUES (5, 2, ‘Engineer’, 9000);
该表包含5个员工的信息,其中有两个部门。我们将使用该表进行以下分组分析操作。
单个字段分组分析
我们首先对单个字段进行分组分析,例如按照部门进行分组,计算每个部门的员工数量和平均薪资。
SELECT dept_id, COUNT(*), AVG(salary)
FROM employee
GROUP BY dept_id;
该查询语句将按照“dept_id”字段进行分组,对每个分组计算“COUNT(*)”(即该部门的员工数量)和“AVG(salary)”(该部门员工的平均薪资)。查询结果如下:
DEPT_ID COUNT(*) AVG(SALARY)
1 2 9000
2 3 5166.67
在这个查询结果中,我们得到了每个部门的员工数量和平均薪资。我们可以看到,部门1有2名员工,平均薪资为9000;而部门2有3名员工,平均薪资为5166.67。
多个字段分组分析
我们还可以对多个字段进行分组分析,例如按照部门和职位进行分组,计算每个组合的员工数量和平均薪资。
SELECT dept_id, job_title, COUNT(*), AVG(salary)
FROM employee
GROUP BY dept_id, job_title;
该查询语句将按照“dept_id”和“job_title”字段进行分组,对每个分组计算“COUNT(*)”(即该部门和职位的员工数量)和“AVG(salary)”(该部门和职位员工的平均薪资)。查询结果如下:
DEPT_ID JOB_TITLE COUNT(*) AVG(SALARY)
1 Engineer 1 8000
1 Manager 1 10000
2 Engineer 1 9000
2 Intern 2 3250
在这个查询结果中,我们得到了每个部门和职位的员工数量和平均薪资。我们可以看到,在部门1中,有1名工程师和1名经理;而在部门2中,有1名工程师和2名实习生。每组员工的薪资平均值也被计算出来了。
筛选分组数据
对分组分析结果的筛选是另一个常用的操作。例如,我们可以查找部门的平均薪资高于5000的部门,并计算该部门的平均薪资和员工数量。
SELECT dept_id, COUNT(*), AVG(salary)
FROM employee
GROUP BY dept_id
HAVING AVG(salary) > 5000;
该查询语句在分组分析后,通过“HAVING”语句对满足条件的部门进行筛选,只返回平均薪资大于5000的部门。查询结果如下:
DEPT_ID COUNT(*) AVG(SALARY)
1 2 9000
2 3 5166.67
在这个查询结果中,我们只得到了平均薪资大于5000的部门的信息。结果表明,只有部门1和部门2满足此条件,符合筛选条件的部门的数量和平均薪资被计算了出来。
结论
本文介绍了如何在Oracle数据库中对一个表进行分组分析。我们可以对单个字段或多个字段进行分组,计算每个分组的汇总结果。同时,我们还可以通过筛选条件来选择满足要求的分组数据。这是Oracle中非常常用的一些数据处理方法,具有很高的实用性。