oracle组查询
概念:
所谓组查询即将数据按照某列或者某些列相同的值进行分组,然后对该组的数据进行组函数运用,针对每一组返回一个结果。
note:
1.组函数可以出现的位置: select子句和having 子句
2.使用group by 将将行划分成若干小组。
3.having子句用来限制组结果的返回。
语法:
select ...
from ...
where ...
group by col_name,col_name
having ...
order by...
group by col_name:即将数据按照col_name相同值进行分组
组函数常见有5个:
avg:求平均值
count:求总数
max:最大值
min:最小值
sum:求和
avg([distinct] column )/sum([distinct] column) :可以作用在存储数字数据的列上。
max(),min():可以作用在任意类型的数据之上。
对字符型数据的最大值,是按照首字母由A~Z的顺序排列,越往后,其值越大。当然,对于汉字则是按照其全拼拼音排列的,若首字符相同,则比较下一个字符,以此类推。
count([distinct] column | *) :
count(*) : 统计表中所有的行数
count(column) : 返回所有非空行的行数
练习:
查看各个部门的最高工资
查看各个部门的员工数
查看各个部门的平均工资
查看各个部门的最低工资
group by 子句:
1.用来将表中的行划分成若干更小的组
2.出现在select子句中,但是没有出现在组函数中的列必须出现在group by子句中
3.出现在group by中的列不一定出现在select子句中。
4.group by子句中的列出现在select结果中,表意性比较强。
5.当group by子句中出现多列的时候,表示按照从左至右的顺序进行分组,即先按照第一列分组, 然后再第一列分好的组里面 按照第二列进行分组,以此类推。
6.限制组结果的返回一定使用having不能使用where。
需求:
1.查看各部门,职称相同的人的平均工资。
目标查询: 平均工资
from : s_emp
条件 : 各部门 ,职称相同。
select dept_id,title, avg(salary)
from s_emp
group by dept_id,title;’
order by avg(salary);
2.查看所有部门的部门工资总和,按照部门工资的降序排序
目标 : sum(salary)
from :s_emp
条件 :各部门工资
select dept_id, sum(salary) s
from s_emp
group by dept_id
order by s desc;
3.查找部门平均工资>1000的所有部门的id和平均工资
目标: 部门id 和 avg(salary)
from: s_emp
条件: 部门平均工资
部门平均工资>1000
select dept_id,avg(salary)
from s_emp
group by dept_id
having avg(salary)>1000
order by dept_id;
having: 限制组结果的返回。
1.如果希望限制组结果的返回,那么直接使用having子句跟在group by 子句之后。
需求:
1.查看职称不以VP开头的所有员工,
2.并且将他们以职称分组,
3.求各职称的工资总和,
4.将工资综合>5000的职称和工资总合显示出来。
目标:title sum(salary)
from: s_emp
条件:职称不以VP开头 title not like 'VP%'
group by:各职称
限制组结果: sum(salary)>5000;
select title,sum(salary) sumS
from s_emp
where title not like 'VP%'
group by title
having sum(salary)>5000
order by sumS desc;
oracle组查询的更多相关文章
- 各种oracle参数查询语句
各种oracle参数查询语句 1.show parameter:--显示各个系统参数配置 2.select * from v$parameter;--显示各个系统参数配置 2.show paramet ...
- oracle高级查询(实例基于scott用户四张表)
oracle高级查询(实例基于scott用户四张表) 分组查询 多表查询 子查询 综合实例 ====================================================== ...
- Oracle 去重查询
Oracle 去重查询 CreateTime--2018年2月28日15:38:45 Author:Marydon (一)使用distinct --查询指定区间内表停诊字段的值 SELECT DI ...
- ORACLE中查询语句的执行顺及where部分条件执行顺序测试
Oracle中的一些查询语句及其执行顺序 原文地址:https://www.cnblogs.com/likeju/p/5039115.html 查询条件: 1)LIKE:模糊查询,需要借助两个通配符, ...
- oracle 常用查询语句
一.一般日常用的脚本 1.检查源库每个节点至少3组redoselect group#,thread#,bytes/1024/1024,members,status from v$log; select ...
- Oracle层次查询
Oracle层次查询的语法如下: 下面根据两道“烧脑”的题具体来体现: 1. 根据时间先后顺序,十二星座的英文名称用逗号串起来为'Aries,Taurus,Gemini,Cancer,Leo,Virg ...
- 【SQL】Oracle分页查询的三种方法
[SQL]Oracle分页查询的三种方法 采用伪列 rownum 查询前10条记录 ? 1 2 3 4 5 6 7 8 9 10 11 [sql] select * from t_user t whe ...
- 关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)
关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其... 方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999 ...
- Oracle参数化查询
Oracle参数化查询默认是根据顺序绑定的 select * from table where name=:p1 and (select id from table2 where name=:p1); ...
随机推荐
- poj1006-Biorhythms(中国剩余定理)
一,题意:右上角中文.二,思路: 1,由题意得出方程组 2,利用中国剩余定理求解 3,求出最小正整数三,步骤: 1,由题意得出方程组 (n+d) % 23 = p ; (n+d) % 28 = e ; ...
- JSTL标签出错:<c:forEach var="book" items="${requestScope.books}" varStatus="status">
今天在运行书里的JSTL标签代码的时候出错,总结一下: 问题1.The JSP specification requires that an attribute name is preceded by ...
- find命令查找文件,并排除相应路径
find / -path "/exclude/" -prune -o -name "lsof" -print 查找根目录下文件,并排除/exclude路径
- DevExpress GridView加入DevExpress中的右键菜单PopuMenu
1. 添加一个Barmanager控件 2. 加入popumenu控件,点击该控件右上角的黑色三角号,编辑选项,点击编辑的选项,选择事件,编辑事件. 3. 在使用该右键菜单的控件添加MouseUp事件 ...
- 关于HTML5中video标签的奇怪现象
很多人刚开始学习html5 的时候在使用video标签时会出现这样的情况: 发现video标签在网页中播放时只有声音但是没有图像,如: <!DOCTYPE html> <html&g ...
- python 特殊的下划线
Python 用下划线作为变量前缀和后缀指定特殊变量. _xxx 不能用'from module import *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核 ...
- Assets和Raw区别
在建立项目中一般会默认建立assets文件,当然我们还可以在res文件下面建立raw文件夹,这里面都可以存放一些多媒体文件或者文本信息,可以供我们在程序中使用. assets下面的文件不会被编译,通过 ...
- BI系统与KPI指标的整合分析
今天我们要说的是信息化时代下关于企业运营的两个热词:BI系统和KPI指标.一直到现在,企业运营的方方面面都在被数据化,成为庞大信息流的一部分,这一庞大的信息流,正以我们自己都尚未完全意识到的速度和规模 ...
- 无法识别的属性“targetFramework”的解决方法
本文导读:网站发布后,在IIS中浏览的时候出现以下异常:无法识别的属性“targetFramework”,请注意属性名称区分大小写.出现这个问题是由IIS配置该站点的.NET Framework 版本 ...
- jq 截取字符串
var str="abcde";截取ab;str=str.substring(0,2);意思是从第一个字符开始截取两位: 一.函数:split() 功能:使用一个指定的分隔符把一个 ...