Oracle数据库中的两种分组技术(oracle两种分组)
Oracle数据库中的两种分组技术
在数据分析中,分组是必不可少的一步。在Oracle数据库中,有两种不同的分组技术:GROUP BY和HAVING。本文将对这两种技术进行介绍,并提供相关代码。
1. GROUP BY
GROUP BY会将数据按照特定的字段进行分组,并对每个分组进行聚合计算。
语法:
SELECT column1, column2, aggregate_function(column3)
FROM table_name
WHERE condition
GROUP BY column1, column2;
示例:假设我们有一张学生表,其中包含学生姓名、性别、年龄和成绩。
CREATE TABLE students (
name varchar(50),
sex varchar(10),
age int,
score int
);
我们可以按照性别和年龄分组,统计每个分组的平均成绩。
SELECT sex, age, AVG(score)
FROM students
GROUP BY sex, age;
结果:
sex age AVG(score)
————————–
男 18 80
男 19 85
女 18 90
女 19 95
2. HAVING
HAVING是在GROUP BY分组的基础上进一步筛选数据的条件,类似于WHERE语句。
语法:
SELECT column1, aggregate_function(column2)
FROM table_name
WHERE condition
GROUP BY column1
HAVING condition;
示例:从上面的学生表中,我们要找出平均成绩高于90分的年龄段。
SELECT age, AVG(score)
FROM students
GROUP BY age
HAVING AVG(score) > 90;
结果:
age AVG(score)
——————
19 95
这个查询返回的是年龄为19岁的学生的平均成绩,因为只有这个年龄段的平均成绩高于90分。
总结
在Oracle数据库中,GROUP BY和HAVING是两种基本的分组技术,可以帮助我们对大量的数据进行聚合和筛选。掌握这两种技术,能够更好地提高数据处理的效率和质量。