Oracle面试题 表连接 高级排序函数 - 高级分组函数 (附简单记忆法)



--=================================================================
面试题 掌握:


高级排序函数: 
[ 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面试题 表连接 高级排序函数 - 高级分组函数 (附简单记忆法))