点击“蓝字”关注我们
晟数学院DBA成长日记--SQL篇
with子句
可以使用WITH子句创建临时查询表。WITH子句提供了一种定义临时表的操作方法,如果在一个查询之 中,要反复使用到一些数据,那么就可以将这些数据定义在WITH子句之中。
with子句
(1)使用WITH子句将emp表中的数据定义为临时表
(2)查询每个部门工资最高的雇员编号、姓名、职位、雇佣日期、工资、部门编号、部门名称,显示的结果按照部门编号进行排序
小结:WITH子句可以构建一张临时表供查询使用。WITH子句可以构建一张临时表供查询使用。
行列转换
(3)查询每个部门中各个职位的总工资 —— 按照部门编号及职位进行分组
(4)查询每个部门中各个职位的总工资 —— 将多条工资统计信息放在一行上进行显示
分析函数
基本语法:
函数名称([参数 , ....]) OVER (
PARTITION BY 子句 字段 , …
[ORDER BY 子句 字段 , … [ASC | DESC] [NULLS FIRST | NULLS LAST]
[WINDOWING 子句]) ;
本语法组成如下:
函数名称:类似于统计函数(COUNT()、SUM()等),但是在此时有了更多的函数支持;
OVER子句:为分析函数指明一个查询结果集,此语句在SELECT子句之中使用;
PARTITION BY子句:将一个简单的结果集分为N组(或称为分区),而后按照不同的组对数据进行统计;
ORDER BY 子句:明确指明数据在每个组内的排列顺序,分析函数的结果与排列顺序有关;
NULLS FIRST | NULLS LAST:表示返回数据行中包含NULL值是出现在排序序列前还是尾;
WINDOWING 子句(代名词):给出在定义变化的固定的数据窗口方法,分析函数将对此数据进行操作。
(5)以每个部门为聚合,查找出每个部门的总工资,再追加在表的最后一列,即sum列
说明:sum是 partition by deptno的别名
(6)以deptno,job聚合,在最后一列追加sum结果
SCOTT@SDEDU> select deptno,ename,sal,job,sum(sal) over (partition by deptno,job)sum from emp;
说明:“(partition by deptno,job)sum ” 的结果赋给 “sum(sal)”
(7)计算各部门工资所占的总工资比率
(8)百分结果的由来
SCOTT@SDEDU> select 9400/(9400+12375+800+8750) from dual;
9400/(9400+12375+800+8750)
------------------------------------------
.300079808
推荐阅读
SQL语句 之 完整性约束
晟数学院DBA成长日记
SQL语句 之 序列
晟数学院DBA成长日记
SQL语句 之 视图
晟数学院DBA成长日记
发表评论