当前位置: 代码迷 >> Oracle认证考试 >> 求解oracle 面试题解决方法
  详细解决方案

求解oracle 面试题解决方法

热度:7260   发布时间:2013-02-26 00:00:00.0
求解oracle 面试题
ORACLE_SQL测试题(总分100分)
1、 查询数据库系统当前时间,以“20080416 23:59:59”输出结果。(5分)

2、 查询A表中数据记录的总行数。(5分)

3、 EMP雇员表中有staffno(工号),sala(薪水),indate(入职日期)3个字段。请按日期分组查询出该天入职雇员名单及其薪水,并按薪水从高到低排序。(10分)


4、 EMP雇员表中有staffno(工号),sala(薪水),indate(入职日期)3个字段。请编写一个存储过程,给2006年前入职的员工加薪300元,给2007年入职的员工加薪200元,其他员工加薪100元。(要求使用游标,逐行进行处理)。(30分)



5、 EMP雇员表中有staffno(工号),sala(薪水),indate(入职日期)3个字段。SCORE考核成绩表中有staffno(工号),SCORE(分数)两个字段。请查询出没有考核成绩(在SCORE表中没有记录)的雇员名单及其入职时间。(要求使用外连接方式实现)。(20分)


6、 Emp雇员表有1千万条记录,未建任何索引,目前需要使用Select  *  from emp where substr(staffname,3,3)=’cai’;进行查询,请问该如何进行优化,使得执行效率会得到提升。(优化措施可包括对表结构的更改、对SQL的更改)(30分)

------最佳解决方案--------------------------------------------------------
1
select to_char(sysdate,'yyyymmdd hh24:mi:ss') from dual
------其他解决方案--------------------------------------------------------
2
select count(*) from a
------其他解决方案--------------------------------------------------------
谢谢,帮我看下下面的题
------其他解决方案--------------------------------------------------------
3 题目出的有问题,这叫分组吗?
直接按日期,薪水排序不就行了

select indate,staffno,sala
from emp
order indate,sala desc
------其他解决方案--------------------------------------------------------
这是华为面试题

------其他解决方案--------------------------------------------------------
4哪需要游标啊
,直接update一句就够了,游标只有麻烦
update emp
set sala=(
case
when to_char(indate,'yyyy')<'2006'
then sala+300
when to_char(indate,'yyyy')<'2006'
then sala+200
else 
   sala+100
)
------其他解决方案--------------------------------------------------------
帮忙按题意做下好吗?
------其他解决方案--------------------------------------------------------
绝对给多多的分,少了的话,再加
------其他解决方案--------------------------------------------------------
4一个条件写错了
华为就考这题目啊?

update emp 
set sala=( 
         case 
            when to_char(indate,'yyyy') <'2006' 
                 then sala+300 
            when to_char(indate,'yyyy') <'2007' 
                then sala+200 
            else 
                sala+100 
)


------其他解决方案--------------------------------------------------------
4 还是写错了
update emp 
set sala=( 
         case 
            when to_char(indate,'yyyy') <'2006' 
                 then sala+300 
            when to_char(indate,'yyyy') ='2007' 
                then sala+200 
            else 
  相关解决方案