zl程序教程

您现在的位置是:首页 >  其他

当前栏目

oraclesql面试题sql笔试题_oracle高级面试题

面试题OracleSQL 高级 笔试 oraclesql
2023-06-13 09:11:07 时间

大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说oraclesql面试题sql笔试题_oracle高级面试题,希望能够帮助大家进步!!!

1删除重复记录

delete from t where t.rowid not in ( select max(rowid) from t group by name); 2根据2表的关联列,更新1个表的多个字段

update t

set t.address = ( select e.address from e,t where t.name = e.name),

t.phone = ( select e.phone from e,t where t.name = e.name); 3选择一段范围内的数据

select * from t where rownum <= 5

minus

select * from t where rownum < 3;

或者

select * from ( select rownum as rn,t.* from t ) s

where s.rn between 3 and 5; 查询工资最高的几个人

select * from (select * from emp order by salary desc) where rownum<=3;

几个行转列,列转行的测试

SQL> select * from t;

ID NAME

---------- ------------------

1 a

2 b

3 c

4 d

1 e

1 f

1 g

2 h

2 i

2 j

已选择10行。

select id ,wm_concat(name) from t group by id;

11 a,e,f,g

22b,h,j,i

33c

44d

select * from test_tb_grade;

11 bai语文 78

22bai数学89

33bai英语90

44xiao语文67

55xiao数学98

66xiao英语56

下面是使用decode和case when的转换

select user_name,

sum(decode(course,'语文',score,null)),sum(decode(course,'数学',score,null)),sum(decode(course,'英语',score,null))

from test_tb_grade group by user_name;

select user_name,

sum(case when course = '语文' then

score

else null end ),

sum(case when course = '数学' then

score

else null end),

sum(case when course = '英语' then

score

else null end)

from test_tb_grade group by user_name;

对应的查询结果如下:

1bai 788990

2xiao 679856

列转行,主要是使用了union

select * from test_tb_grade2;

11 bai67 7890

21xiao8988 96

select user_name, cn_score

from test_tb_grade2

union

select user_name, math_score

from test_tb_grade2

union

select user_name, en_score from test_tb_grade2;

1bai 67

2bai78

3bai90

4xiao 88

5xiao 89

6xiao 96

参考

http://blog.csdn.net/zhoubo200/article/details/5338107

http://www.2cto.com/database/201108/100792.html