组函数(多值函数)

数据库中函数的分类:
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>的更多相关文章

  1. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  2. oracle学习笔记第一天

    oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字   1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...

  3. Oracle学习笔记——点滴汇总

    Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster

  4. Oracle学习笔记之四sp1,Oracle 11g的常用函数

    从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i)    分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...

  5. Oracle学习笔记之四,SQL语言入门

    1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...

  6. Oracle学习笔记—数据字典和常用命令(转载)

    转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...

  7. oracle学习笔记(一)用户管理

    --oracle学习第一天 --连接 @后面连接数据库实例,具体连接到那个数据库 conn scott/tiger@MYORA1; --修改密码 passw; --显示用户 show user; -- ...

  8. 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子

    1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...

  9. Oracle 学习笔记 11 -- 视图 (VIEW)

    本次必须学习一个全新的概念-- 视图 (VIEW).在前面的笔记中曾提到过,数据对象包含:表.视图.序列.索引和同义词.前面的笔记都是对表的想剖析,那么本次笔记就对视图的世界进行深入的剖析. 视图是通 ...

  10. oracle学习笔记1(环境搭建)

    学习的开始先剧透一下,本人有点笨,本来想用oracle vbox,装个red hat+oracle,但是虚拟机一直报错,0x00000000内存不能written.所以便想到其他的办法,刚好接触了go ...

随机推荐

  1. python ORM的使用

    安装 >pip install sqlalchemy #coding=utf-8 ''' 原始的sql语句 CREATE TABLE user ( id INTEGER NOT NULL AUT ...

  2. 我心中的ASP.NET Core 新核心对象WebHost(一)

    以本系列文章向Fish 前辈的那篇我心中的ASP.NET 核心对象致敬.(虽然不知道前辈现在在干什么).一晃就6年过去了,那首 郝云 的<回到那一天>怎么唱来着? 时光一晃,你就三十了. ...

  3. 攻防世界--re1

    练习文件下载:https://www.lanzous.com/i5lufub 1.使用IDA打开,进入main函数. 2.转为C代码 可以看到,输入v9之后,与v5比较,判断我们输入的flag是否正确 ...

  4. 关于正则表达式RegExp

    常用元字符串 元字符 说明 \d 匹配   数字 \D 匹配   非数字 \w 匹配   数字,字母,下划线 \W 匹配   任意不是字母,数字,下划线 \s 匹配   空白符 \S 匹配   任意不 ...

  5. Python人工智能识别文字内容(OCR)

    环境准备 安装pytesseract和PIL 安装这两个包可以借助pip命令行安装 pip install PIL pip install pytesseract 安装识别引擎tesseract-oc ...

  6. 20180329-layoutSubviews的调用机制

    如果你想强制更新布局,不要直接调用此方法,你可以调用setNeedsLayout方法,如果你想立即显示你的views,你需要调用layoutIfNeed方法 layoutSubviews作用: lay ...

  7. C语言实现读取文件所有内容到字符串

    #include "stdio.h" #include "string" #include "stdlib.h" using namespa ...

  8. 变量管理 dotenv 的 使用

    python-dotenv 安装 pip install python-dotenv 或 pipenv install python-dotenv --skip-lock 创建目标文件 在项目根目录下 ...

  9. Sass--调用混合宏

    在 Sass 中通过 @mixin 关键词声明了一个混合宏,那么在实际调用中,其匹配了一个关键词“@include”来调用声明好的混合宏.例如在你的样式中定义了一个圆角的混合宏“border-radi ...

  10. 快速失败(fail—fast)和 安全失败(fail—safe)

    快速失败(fail-fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的结构进行了修改(增加.删除),则会抛出Concurrent Modification Exception. 原理 ...