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 ...
随机推荐
- rlogin - 远程注册
SYNOPSIS(总览) rlogin [-8EKLdx ] [-e char ] [-l username ] host DESCRIPTION(描述) Rlogin 在远程主机 host 上开始 ...
- javaweb各种框架组合案例(四):maven+spring+springMVC+spring data jpa(hibernate)【失败案例】
一.失败案例 1. 控制台报错信息 严重: Exception sending context initialized event to listener instance of class org. ...
- Linux系统理解以及Linux系统学习心得
原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 作者:严哲璟 说一下我对Lin ...
- 【LeetCode】随机化算法 random(共6题)
[384]Shuffle an Array(2019年3月12日) Shuffle a set of numbers without duplicates. 实现一个类,里面有两个 api,struc ...
- Linux --忘记root密码/su: Authentication failure
如果忘记了root用户的密码,或者su root的时候,提示:su: Authentication failure 那么,可以通过以下的方式来重新设置密码,而后,再尝试,那么就可以顺利su root了 ...
- vuex的配置使用
为什么使用vuex? vuex主要是是做数据交互,父子组件传值可以很容易办到,但是兄弟组件间传值(兄弟组件下又有父子组件),或者大型spa单页面框架项目,页面多并且一层嵌套一层的传值,异常麻烦,用vu ...
- windows java jdk安装
安装 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 勾选协议,选择 ...
- Eclipse中 Run as --->Maven build 命令详解
Maven Build Goals: clean 清除编译,compile 编译,test 编译并测试,install 打包并发送到本地仓库,package 只是打成jar包,并不会发送到本地 ...
- Restful风格接口浅析
为什么使用RESTful1.JSP技术可以让我们在页面中嵌入Java代码,但是这样的技术实际上限制了我们的开发效率,因为需要我们Java工程师将html转换为jsp页面,并写一些脚本代码,或者前端代码 ...
- thread 类详解
java.lang.Thread类详解 一.前言 位于java.lang包下的Thread类是非常重要的线程类,它实现了Runnable接口,今天我们来学习一下Thread类,在学习Thread类之前 ...