Oracle学习笔记<5>
组函数(多值函数)
数据库中函数的分类:
1)单值函数 Single Rows Functions
特点:n条数据参与函数处理,最终得到n条结果。
2)多值函数(组函数) Multiple Rows Functions
特点:n条数据参与函数处理,得到的结果可能小于n。
1.常见的组函数
avg 计算平均值
max 计算最大值
min 计算最小值
sum 计算代数和
count 计算某个字段非空字段值的总数量
2.组函数语法
select 函数名(字段名)
from 表名
where 条件
[group by 要分组的字段]
[having 分组之后的查询条件];
group by如果不出现,则视为将表中的所有数据分为一个大组。
最终的组函数运算只有一个结果。
关键字:
1)group by 用来指定分组的依据,
例如:group by 字段A
在分组时就会把所有字段A的值相等的
数据分为一组。
2)having
做限定性查询的。
功能类似于where。
位置
1)group by关键字出现在where子句的后面。
2)having 出现在group by后面。
六大关键字书写顺序:
select .. 5
from .. 1
where .. 2
group by .. 3
having .. 4
order by.. 6
注意:
1)出现在select后面的字段,
要么是组函数,要么是出现在group by后面的字段。
即分组的依据字段。
2)where和having的区别
where发生在分组之前,
定义的是有关单值筛选的条件。
在where后面不允许出现组函数。
having发生在分组之后,
定义的是有关小组的筛选条件。
在having后面不允许出现单值条件判断。
练习:
1.查看各个部门的最高工资
select max(salary)
from s_emp
group by dept_id;
2.查看各个部门的员工数
count函数 计算某个字段非空字段值的数量
count(*) 把所有字段的字段值数量都计算出来,
取最大的为查询结果。
count(1)
3.查询各个部门各个职称的平均薪水和最大薪水,并且平均薪水大于2000的部门id;
根据多个字段进行分组:
group by 字段1,字段2...
分组时将所有出现在group by后面的字段值都相等的数据
分为一组。
select avg(salary),max(salary),dept_id
from s_emp
group by dept_id,title
having avg(salary) > 1000;
4.查询title中不包含vp字符串的每个职位的平均薪水和总薪水,并对平均薪水进行降序排列,并且每个职位的总薪水大于5000?
select avg(salary),sum(salary)
from s_emp
where title not like '%vp%'
group by title
having sum(salary) > 5000
order by avg(salary) desc;
作业:
1)查询所有员工的平均工资,最高工资最低工资,工资总和,还有有多少个员工?
select avg(salary),max(salary),min(salary),
sum(salary),count(*)
from s_emp;
2)查询每个部门的平均工资?对平均工资降序排序.平均工资大于1400.
select avg(salary)
from s_emp
group by dept_id
having avg(salary) > 1400
order by avg(salary) desc;
3)查看各个部门的最高工资
select dept_id,max(salary)
from s_emp
group by dept_id;
4)查看各个部门的员工数
select count(*)
from s_emp
group by dept_id;
5)查询各个部门各个职称的平均薪水和最大薪水,
并且平均薪水大于2000的部门id。
select avg(salary),max(salary),dept_id
from s_emp
group by dept_id,title
having avg(salary) > 2000;
6)查询title中不包含vp字符串的每个职位的平
均薪水,并对平均薪水进行降序排列,并且每个职位
的总薪水大于5000。
select avg(salary)
from s_emp
where title not like '%vp%'
group by title
having sum(salary) > 5000
order by avg(salary) desc;
8)查看每个区域部门数?
区域-部门:1对多
select count(*)
from s_dept
group by region_id;
查询每个部门的员工数?
select count(*)
from s_emp
group by dept_id;
9)查询南美地区的部门数?
区域名字 = 南美
select count(*)
from s_dept d,s_region r
where d.region_id = r.id
and r.name = 'South America';
10)查询南美地区工资大于1400的员工的信息?
三表查询
select e.id,e.last_name,e.salary
from s_emp e,s_dept d,s_region r
where e.dept_id = d.id
and d.region_id = r.id
and r.name = 'South America'
and e.salary > 1400;
方式二:子查询(嵌套查询)
select id,last_name,salary
from s_emp
where dept_id in(select d.id
from s_dept d,s_region r
where d.region_id = r.id
and r.name = 'South America');
SQL:查询所有工作在南美区域的部门id?
select d.id
from s_dept d,s_region r
where d.region_id = r.id
and r.name = 'South America';
Oracle学习笔记<5>的更多相关文章
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
- Oracle学习笔记——点滴汇总
Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster
- Oracle学习笔记之四sp1,Oracle 11g的常用函数
从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i) 分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...
- Oracle学习笔记之四,SQL语言入门
1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...
- Oracle学习笔记—数据字典和常用命令(转载)
转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...
- oracle学习笔记(一)用户管理
--oracle学习第一天 --连接 @后面连接数据库实例,具体连接到那个数据库 conn scott/tiger@MYORA1; --修改密码 passw; --显示用户 show user; -- ...
- 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子
1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...
- Oracle 学习笔记 11 -- 视图 (VIEW)
本次必须学习一个全新的概念-- 视图 (VIEW).在前面的笔记中曾提到过,数据对象包含:表.视图.序列.索引和同义词.前面的笔记都是对表的想剖析,那么本次笔记就对视图的世界进行深入的剖析. 视图是通 ...
- oracle学习笔记1(环境搭建)
学习的开始先剧透一下,本人有点笨,本来想用oracle vbox,装个red hat+oracle,但是虚拟机一直报错,0x00000000内存不能written.所以便想到其他的办法,刚好接触了go ...
随机推荐
- wangEditor 文本编辑器
参考:https://www.cnblogs.com/Scholars/p/8968838.html 下载:http://www.wangeditor.com/ 前端代码: <script ty ...
- sqlite查询语句
搜索距现在六个月前的月份第一天日期: SELECT date('now','start of month','-6 month','0 day'); 搜索距现在六个月前的日期: SELECT date ...
- python列表解析和生成器表达式
列表解析作为动态创建列表的强大工具,值得学习. 列表解析技术之前的状况--函数式编程. lambda.filter(), map() enumerate, sorted, any, all, zip ...
- rabbitmq消息的路由
https://blog.csdn.net/lby0307/article/details/80875666 三种模式
- rabbitmq 结构体
amqp_basic_properties_t props; props._flags = AMQP_BASIC_CONTENT_TYPE_FLAG | AMQP_BASIC_DELIVERY_MOD ...
- JavaScript的三大组成部分
JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果.通常JavaScript脚本是通过嵌入在HTML中来实现 ...
- tomcat启动一闪而过解决办法报错The CATALINA_HOME environment variable is not defined correctly
解决办法: Tomcat无论在windows上还是Linux上只需要吧安装包传上去解压就行,不需要配置环境变量,吧之前有可能别人别配置的环境变量统一删掉即可(网上一大堆说需要配置的都是胡说八道).把以 ...
- python 中的eval()函数,称为评估函数
目的:使用BDD的时候,feture中传过来的预期结果是列表字符串:assert_list = "[1,2,3]",我想要的是[1,2,3] 处理方法:使用eval()评估函数 ...
- Cesium标点
let startPoint = this.viewer.entities.add( //viewer.entities.add 添加实体的方法 { name: '测量距离', //这个属性跟页面显示 ...
- python模块之numpy,pandas基本用法
numpy: 是 Python 的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库简单来说:就是支持一维数组和多维数组的创建和操作,并有丰富的函数库. 直接看例子 ...