sqlwith语法

ads
 

点击“蓝字”关注我们

晟数学院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 子句(代名词)给出在定义变化的固定的数据窗口方法,分析函数将对此数据进行操作。


组合顺序

在分析函数之中存在有三种子句:PARTITION BY、ORDER BY、WINDOWING,而这三种子句的组合 顺序有如下几种:

第一种组合:函数名称([参数  ,…]) OVER(PARTITION BY 子句 ,  ORDER BY 子句 , WINDOWING子句);

第二种组合:函数名称([参数  ,…]) OVER(PARTITION BY 子句 ,  ORDER BY 子句);

第三种组合:函数名称([参数  ,…]) OVER(PARTITION BY 子句);

第四种组合:函数名称([参数  ,…]) OVER(ORDER BY 子句 , WINDOWING子句);

第五种组合:函数名称([参数  ,…]) OVER(ORDER BY 子句);

第六种组合:函数名称([参数  ,…]) OVER();


(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成长日记

记得长按上方二维码关注我们~

最后编辑于:2024/1/10 拔丝英语网

admin-avatar

英语作文代写、国外视频下载

高质量学习资料分享

admin@buzzrecipe.com