Oracle查询之分组函数
2017-07-21 17:45
375 查看
分组函数用于将表中数据分成若干个小组,再对小组中的数据执行组函数
默认情况下一张表的数据就是一个组
Oracle中常见的组函数有avg,count,max,min,sum
avg:求平均值
count:求查询到的记录总数
max:求出某个组中最大值
min:求出某个组中最小值
sum:求出某个组中某个字段的总和
分组函数的语法:
执行顺序从前至后:
FROM ,WHERE,GROUP BY,HAVING,SELECT,ORDER BY
WHERE和HAVING的区别:
GROUP BY和HAVING的区别
分组的具体实例(假设test表中有id,salary等字段)
结果:查询出test表中id大于2并且总工资大于10000的每组的总工资,并且按照id升序显示
分析(按照执行过程):
默认情况下一张表的数据就是一个组
Oracle中常见的组函数有avg,count,max,min,sum
avg:求平均值
例如:select avg(age) from test 结果:查询出test表中的平均年龄
count:求查询到的记录总数
例如:select count(*) from test 结果:查询出test表中记录总数
例如:select count(某个字段名)from test 结果:查询出字段不为空的记录总数
例如:select count(distinct 字段) from test 结果:查询出非空并且不重复的某字段的总数
max:求出某个组中最大值
例如:select max(age) from test 结果:查询出表中最大年龄
min:求出某个组中最小值
例如:select min(age) from test 结果:查询出表中最小年龄
sum:求出某个组中某个字段的总和
例如:select sum(age) from test 结果:查询出表中年龄总和
分组函数的语法:
SELECT [column,] group_function(column), ... FROM table [WHERE condition] [GROUP BY column] [HAVING group_condition] [ORDER BY column];
执行顺序从前至后:
FROM ,WHERE,GROUP BY,HAVING,SELECT,ORDER BY
WHERE和HAVING的区别:
WHERE和HAVING都能作为条件帅选 WHERE比HAVING先执行 WHERE出现在FROM后面,而HAVING出现在GROUP BY后面 HAVING后面可以出现组函数,而WHERE后面不能出现(看执行顺序就知道,WHERE执行时还没有分组)
GROUP BY和HAVING的区别
GROUP BY可以单独存在,它的后面可以不出现HAVING子句 但是HAVING子句要想出现就必须跟在GROUP BY后面
分组的具体实例(假设test表中有id,salary等字段)
SELECT sum(salary) FROM test WHERE id>2 GROUP BY id HAVING sum(salary) >10000 ORDER BY id ASC
结果:查询出test表中id大于2并且总工资大于10000的每组的总工资,并且按照id升序显示
分析(按照执行过程):
首先进入test这个表,执行条件语句where,筛选出id大于2的所有行 然后找出id大于2的所有行 根据id分成很多组 筛选出总工资大于10000的组 根据id降序展示结果
相关文章推荐
- Oracle基础学习二之统计函数及分组查询
- 黑马-程序员Oracle分组函数和topN查询
- oracle中与分组函数有关的多表查询的经典例子
- Oracle分组查询4——扩展分组函数
- Oracle分组查询4——扩展分组函数
- oracle利用分析函数row_number()over()查询一张表所有字段并按照其中部分字段分组查询某字段最大值
- ORACLE-SQL积累(查询外检约束、记录长度、字段长度、启用禁用触发器、case用法、分组连接函数、查询被锁表)
- Oracle---分组函数和多表查询
- Oracle基本操作五:简单查询与简单函数,组函数,分组
- oracle 连接查询,子查询,分组函数
- Oracle基础学习二之统计函数及分组查询
- oracle 10g 学习之多表查询、分组函数(6)
- Oracle入门第三天(上)——多表查询与分组函数
- oracle分组查询
- Oracle 利用lead、lag函数查询已有记录的下一条、上一条记录
- Oracle分组查询5——实例
- 【oracle】用物化视图实现分组合计以提高查询效率
- oracle下数据的排序分组row_number() over()--分析函数,可用于去重
- Oracle instr()函数替代like实现模糊查询
- oracle分组函数之CUBE演示及与ROLLUP的比较