Oracle面试题 表连接 高级排序函数
来源:互联网 发布:手机登录电脑版淘宝网 编辑:程序博客网 时间:2024/06/16 19:28
--=================================================================
面试题 掌握:
高级排序函数:
[ ROW_NUMBER()| RANK() | DENSE_RANK ] OVER (partition by xx order by xx)
1.row_number() 连续且递增的数字 1 2 3 4
row_number() over (partition by xx order by xx )
--学生表中按照所在专业分组,同专业内按成绩倒序排序,成绩相同则按学号正序排序,并给予组内等级
select row_number() over(partition by class_id order by score desc)rn,t.* from student2016 t
2.rank() 跳跃排序 若有相同数据则排名相同 然后跳跃排序 1 2 2 2 5
rank() over (partition by xx order by xx )
select rank() over(partition by class_id order by score desc)rn,t.* from student2016 t
3.dense_rank 若有相同数据则排名相同 然后递增排序
dense_rank over (partition by xx order by xx ) 1 2 2 2 3
select dense_rank() over(partition by class_id order by score desc)rn,t.* from student2016 t
--=================================================================
高级分组函数:
GROUP BY (ROLLUP|CUBE | GROUPING SETS) 用于统计多种分组情况的聚合函数值(AVG,SUM,COUNT..)。
根据这三种套路可以得到具体的分组情况,然后将他们UNION ALL起来返回查询结果。
GROUP BY ROLLUP(a, b, c) ROLLUP 翻滚过桥(上楼)法:null a ab abc 合计4种GROUP BY分组
GROUP BY CUBE(a, b, c) CUBE 立方法: 合计2^3=8种GROUP BY分组
GROUP BY GROUPING SETS ( (a), (b)) GROUPING SETS 组设置法 .合计2种GROUP BY分组。
--=================================================================
面试题-重点掌握:
5.什么是等值连接? 答:使用“=”号进行连接。
6.什么是笛卡尔集? 答:笛卡尔积指做关联操作的每个表的每一行都和其它表的每一行做组合。
7.什么是内连接? 答:内连接只返回两个关联表中所有满足连接条件的记录。
8.什么是外连接? 答:使用外连接,即不仅返回满足连接条件的记录,还将返回不满足连接条件的记录。
什么是左外连接 ?答:以left join 左侧的表为驱动表,显示驱动表全部记录,若右边有不满足的记录,则补null显示。
SELECT table1.column, table2.column
FROM table1 [LEFT | RIGHT | FULL] JOIN table2
ON table1.column1 = table2.column2;
9. 什么叫全连接。全连接是指全外连接,即包含左外连接和右外连接的结果。
10 什么叫自连接? 答:同表相互连接,常用于含有上下级关系的“树状”结构。
11.什么叫自然连接? Natural join 从笛卡尔集 筛选出列名/类型/相等且值相等的记录,然后剔除重复的列。
select * from R natural join S --alter table R rename column C to E
R表 S表
A B C D B E
1 a 3 2 c 7
2 b 6 3 d 5
3 c 7 1 a 3
Step1:笛卡尔集
R表 S表
A B C D B E
1 a 3 2 c 7
1 a 3 3 d 5
1 a 3 1 a 3
2 b 6 2 c 7
2 b 6 3 d 5
2 b 6 1 a 3
3 c 7 2 c 7
3 c 7 3 d 5
3 c 7 1 a 3
Step1:笛卡尔集
R表 S表
A B C D E
1 a 3 1 3
3 c 7 2 7
Step2:从笛卡尔集 筛选出列名相等且值相等的记录
A B C D B E
1 a 3 2 c 7
1 a 3 3 d 5
1 a 3 1 a 3
2 b 6 2 c 7
2 b 6 3 d 5
2 b 6 1 a 3
3 c 7 2 c 7
3 c 7 3 d 5
3 c 7 1 a 3
Step3 : 然后去掉重复的同名列 即保留一个相等的列
B A C D E
a 1 3 1 3
c 3 7 2 7
12 自然连接和等值连接的区别。
答:1.自然连接要求连接字段的名称必须相同。
2.自然连接会去掉重复的列。
- Oracle面试题 表连接 高级排序函数
- [Oracle面试题]Oracle分析函数详解
- java面试题7--数组高级-冒泡排序
- java面试题8--数组高级-选择排序
- .Net面试题 - 高级
- Java高级面试题
- 高级PHPer面试题
- IOS高级面试题
- IOS高级面试题
- php高级面试题
- Java高级面试题
- java高级面试题
- android 高级 面试题
- 高级php面试题
- 面试题(高级特性)
- 高级PHP面试题
- Android 高级面试题
- PHP高级面试题
- POJ 1079 Ratio 笔记
- JavaScript编程中的对象概念
- 5 个免费的受欢迎的 SQLite 管理工具【申明:来源于网络】
- Codeforces-798D. Mike and distribution
- [java]求数组中第2大的数
- Oracle面试题 表连接 高级排序函数
- 2、TFTP服务(宿主机环境搭建)
- C++程序设计(第三版)谭浩强 一章习题
- 手把手原生js简单轮播图
- 卷积神经网络入门
- 求助,这道题还是断错误
- 一起艳恶学习tomcat7与redis实现session共享
- Spring-Boot静态文件处理
- 欢迎使用CSDN-markdown编辑器