SQL语句复习【专题二】

单行函数(日期、数学、字符串、通用函数、转换函数)
多行函数。分组函数。多行数据计算一个结果。
一共5个。sum(),avg(),max(),min(),count()
分组函数   分类
只能处理数值型的数据  sum 、avg
max,min,count ,任何类型都可以处理。

--求所有的员工的最高工资,平均工资,工资总和,最小工资,员工的人数。
select max(sal) 最高工资 ,avg(sal) 平均工资 ,sum(sal) 工资总和 ,min(sal) 最小工资, count(*)

--统计部门编号是 10 的员工的总数
select count(*) from emp where deptno=10
select count(*) from emp where deptno=20
select count(*) from emp where deptno=30

分组查询--group by
--统计排除10部门,其他部门的总人数,工资的总和,工资的平均值,工资的最大值,工资的最小值,使用工资的总和排序 desc
select deptno,sum(sal),avg(sal),max(sal),min(sal),count(*)
from emp
where deptno<>10
group by deptno
order by sum(sal) desc
--使用别名排序
select deptno,sum(sal) 工资总和,avg(sal),max(sal),min(sal),count(*)
from emp
where deptno<>10
group by deptno
order by 工资总和 desc

sql 书写顺序有严格的要求,必须遵守【sql 执行的顺序:from--->where--->group by---select --->order by】
---统计每个部门的总人数,工资的总和,工资的平均值,工资的最大值,工资的最小值,使用工资的总和排序,只显示工资的平均值 >= 2000
select deptno, count(*),sum(sal),avg(sal),max(sal),min(sal)
from emp
where avg(sal) >= 2000---where 后面跟的行过滤条件,不能跟分组的函数,不能进行分组之后的条件的过滤。  不可以
group by deptno
order by sum(sal)
正确写法
select deptno, count(*),sum(sal),avg(sal),max(sal),min(sal)
from emp
--where avg(sal) >= 2000---where 后面跟的行过滤条件,不能跟分组的函数,不能进行分组之后的条件的过滤。
group by deptno
order by sum(sal)

having:是进行分组过滤的条件的关键字。后面可以跟 where 使用的任何的内容。
sql 注意书写顺序【sql 执行的顺序:from--->where--->group by--->having--->select --->order by】
--统计部门人数,平均工资,排除10部门,和平均工资> 1000的部门
select deptno, count(*), avg(sal)
from emp
where deptno<>10
group by deptno
having avg(sal) > 1000
--使用别名
select deptno as 部门编号 , count(*) 部门人数 , avg(sal) 平均工资
from emp
where deptno<>10
group by deptno
having avg(sal) > 1000---只能使用avg(sal) 不能使用别名。别名的生效是在select 执行之后才有效的。而having实在 select之前执行的。
order by 平均工资 desc--order by 最后排序,可以使用select 中的别名。

多字段分组
--平均工资大于1200的部门和工作的组合
select deptno, job,avg(sal)
from emp
group by deptno, job
having avg(sal)>1200

--统计部门人数小于4的部门的平均工资 和 人数
select deptno, count(*), avg(sal)
from emp
group by deptno
having count(*) < 4

--统计各部门最高工资,排除最高工资小于3000的部门
select deptno, max(sal)
from emp
group by deptno
having max(sal) >= 3000

SQL语句复习【专题二】的更多相关文章

  1. SQL语句复习【专题一】

    SQL语句复习[专题一] --创建用户 scott 并设置密码为 tiger create user scott identified by tiger --用户刚刚创建没有任何的权限,连登录的权限都 ...

  2. SQL语句复习【专题三】

    SQL语句复习[专题三] DML 数据操作语言[insert into update delete]创建表 简单的方式[使用查询的结果集来创建一张表]create table temp as sele ...

  3. SQL语句复习【专题四】

    SQL语句复习[专题四] 多表查询 sql 92多表查询 sql92.sql99 标准--查询所有员工的姓名,部门编号,部门名称select * from empselect * from dept- ...

  4. SQL语句复习【专题五】

    SQL语句复习[专题五] 单行子查询:只会得到一个结果的子查询[子查询的内容必须放在小括号中.在查询语句中的查询语句 ]--查询所有比 CLARK 员工 工资高的员工--1.先查询 CLARK 员工的 ...

  5. SQL语句复习【专题六】

    SQL语句复习[专题六] 用户 + 创建表  --创建一个新的用户,然后给新的用户创建一张表,然后给表中添加一些数据.查询表中的数据 --创建用户需要比较大的权限 DBA create user di ...

  6. SQL语句复习【专题七】

    SQL语句复习[专题七] 完整性约束分类1)域完整性约束(非空not null,检查check)2)实体完整性约束(唯一unique,主键primary key)3)参照完整性约束(外键foreign ...

  7. SQL语句复习【专题八】

    SQL语句复习[专题八] 序列 Sequence.数据库对象是 oracle 专有的.作用:可以将某一列的值使用序列,来实现自动增长的功能.访问序列的值.[序列有两个属性 nextval currva ...

  8. SQL语句复习【专题九】

    SQL语句复习[专题九] 视图:View视图的概念:视图是从若干基本表或其他视图构造出来的表.在创建一个视图时,只是存放的视图的定义,也即是动态检索数据的查询语句,而并不存放视图对应的数据在用户使用视 ...

  9. 常用sql语句总结(二)(更新数据,序列,创建数据表,约束,注释)

    常用sql语句总结(二)(更新数据,序列,创建数据表,约束,注释) 一. 增 INSERT INTO 数据表(字段,字段,-) VALUES(值,值-); INSERT INTO emp(empno, ...

随机推荐

  1. k8s中ipvs和iptables选择

    k8s 1.11.0在 centos7上不行 1.11.1之后就可以了

  2. lumen返回网站base url

    可以使用全局帮助函数url() echo url(); //输出http://test.domain.com

  3. Java内部类(3):局部内部类

    有这样一种内部类,它是嵌套在方法和作用域内的,对于这个类的使用主要是应用与解决比较复杂的问题,想创建一个类来辅助我们的解决方案,到那时又不希望这个类是公共可用的,所以就产生了局部内部类,局部内部类和成 ...

  4. 概率dp作业

    概率dp特征: 概率DP一般求的是实际结果,在DP过程中,当前状态是由所有子状态的概率共同转移而来,所以概率DP只是利用了DP的动态而没有规划(即只需转移无需决策).-------qkoqhh A - ...

  5. 日常小节----unity小坑记(静态后不可移动和旋转)

    当物体被置为静态时,模型网格是无法移动和旋转的,只有碰撞器可以. 也就是会出现当父物体不为静态,子物体为静态时,运行后旋转移动父物体,子物体模型网格不会跟随旋转移动,但子物体碰撞器会跟随旋转移动. 或 ...

  6. 【POJ - 3579 】Median(二分)

    Median Descriptions 给N数字, X1, X2, ... , XN,我们计算每对数字之间的差值:∣Xi - Xj∣ (1 ≤ i < j ≤N). 我们能得到 C(N,2) 个 ...

  7. day18 time、datetime、calendar、sys、os、os.path模块

    今日内容 时间模块 time模块 datetime模块 calendar模块 系统模块 sys模块 os模块 os.path模块 time模块: 在 time 模块中使用最多的方法有: time() ...

  8. 小记--------sqoop的简单从mysql导入到hbase操作

    sqoop import -D sqoop.hbase.add.row.key=true                        //是否将rowkey相关字段列入列族中,默认为false :该 ...

  9. 【LOJ】#2983. 「WC2019」数树

    LOJ2983. 「WC2019」数树 task0 有\(i\)条边一样答案就是\(y^{n - i}\) task1 这里有个避免容斥的方法,如果有\(i\)条边重复我们要算的是\(y^{n - i ...

  10. Linux系列(1):入门之基本命令详解

    Linux常用命令 声明: 作者使用的Linux是CentOS7版本. 本节主要讲解内容: 1.ls.date.bc.cal等指令的详细用法 2.介绍常用快捷键 3.了解磁盘分区以及挂载等概念 在Li ...