SQL题及答案

上传人:飞*** 文档编号:2569949 上传时间:2017-07-25 格式:DOC 页数:9 大小:73.50KB
返回 下载 相关 举报
SQL题及答案_第1页
第1页 / 共9页
SQL题及答案_第2页
第2页 / 共9页
SQL题及答案_第3页
第3页 / 共9页
SQL题及答案_第4页
第4页 / 共9页
SQL题及答案_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《SQL题及答案》由会员分享,可在线阅读,更多相关《SQL题及答案(9页珍藏版)》请在金锄头文库上搜索。

1、第一部分雇员表:EMPLOYEE(EMPNO CHARACTER(6) NOT NULL, -雇员编号,定义为主键FIRSTNME VARCHAR(12) NOT NULL, -雇员第一个名字MIDINIT CHARACTER(1), -雇员中间名字的首字母LASTNAME VARCHAR(15) NOT NULL, -雇员最后一个名字WORKDEPT SMALLINT, -部门编号,外键,对应部门表DEPTNOPHONENO CHARACTER(4), -电话号码HIREDATE DATE, -雇用日期JOB CHARACTER(8), -工作岗位EDLEVEL SMALLINT NOT N

2、ULL, -学历 (1:中学及以下,2:大学,3:硕士及以上)SEX CHARACTER(1), -性别 (1:男,2:女)BIRTHDATE DATE, -出生日期 (60 周岁以上为退休)SALARY DECIMAL(9, 2), -薪水BONUS DECIMAL(9, 2) -奖金);部门表:DEPT(DEPTNO SMALLINT NOT NULL, -部门编号,主键DEPTNAME VARCHAR(14), -部门名称MANAGER SMALLINT -部门经理编号,每个经理也是雇员表中一个雇员);1、找出收入(SALARY 和 BONUS 之和)最低的 10 个 EMPNO,按照收

3、入从低到高排序。DB2:select empno,salary+bonus from employee order by salary+bonus desc fetch first 10 rows only2、从雇员表中删除雇用日期在 1940 年 1 月 1 日以前的雇员。Db2:Delete from employee where hiredate1)6、在雇员表 JOB 字段上新建一个索引,取名 idx_emp_job。Db2:Create index idx_emp_job on employee(job)7、找到 FIRSTNME=John的员工所在部门的名称和部门经理编号。Db2:

4、select appusr.dept.manager,appusr.dept.deptname from appusr.dept where appusr.dept.deptno in(select workdept from appusr.employee where firstname=qq)8、更新雇员表的薪水,如果为空置为 0,如果不为空,不变更字段值。Db2:update appusr.employee set bonus=0 where bonus is null9、往部门表新增一个部门,DEPTNO=123,DEPTNAME=Market,MANAGER=20 。Db2:Inse

5、rt into dept values(123,Market,20)10、列出每个员工的字母缩写,忽略中间的名字,例如,CHRISTINE I HAAS 缩写为CH,BRUCE ADAMSON 缩写为 BA。Db2:select substr (upper(firstname),1,1)|substr(upper(lastname),1,1) from appusr.employee第二部分雇员表:EMPLOYEE(EMPNO CHARACTER(6) NOT NULL, -雇员编号,定义为主键FIRSTNME VARCHAR(12) NOT NULL, -雇员第一个名字MIDINIT CHA

6、RACTER(1), -雇员中间名字的首字母LASTNAME VARCHAR(15) NOT NULL, -雇员最后一个名字WORKDEPT SMALLINT, -部门编号,外键,对应部门表DEPTNOPHONENO CHARACTER(4), -电话号码HIREDATE DATE, -雇用日期JOB CHARACTER(8), -工作岗位EDLEVEL SMALLINT NOT NULL, -学历 (1:中学及以下,2:大学,3:硕士及以上)SEX CHARACTER(1), -性别 (1:男,2:女)BIRTHDATE DATE, -出生日期 (60 周岁以上为退休)SALARY DECI

7、MAL(9, 2), -薪水BONUS DECIMAL(9, 2) -奖金);部门表:DEPT(DEPTNO SMALLINT NOT NULL, -部门编号,主键DEPTNAME VARCHAR(14), -部门名称MANAGER SMALLINT -部门经理编号,每个经理也是雇员表中一个雇员);1、如果雇员对应的经理编号小于 100,更新雇员表的薪水和奖金字段,如果为空置为 0,如果不为空,在原有基础上加 10%,结果按四舍五入取整。Db2:update employee a set salary=value(salary*1.1,0),bonus=value(bonus*1.1,0) w

8、here exists (select 1 from dept b where b.manager50000)6、类似于论坛性质的应用,从表 tab1 中取记录,每页展示 20 条记录,请取出按照字段uid 排序的第 21 至第 40 条记录。Db2:select * from (select rownumber() over(order by workdept) as ss,a.* from appusr.employee a ) where ss between 2 and 27、写出得到当前时间加 1 年加 2 个月加 3 天是星期几的 SQL。Db2:Values(dayname(cu

9、rrent date+1 year+2 month+3 day)8、使用查询语句实现如下统计报表:人数 工资(salary) 平均工资学历男 女 合计 男 女 合计 男 女中学及以下大学硕士及以上Select edlevel,sum(case when sex=1 then 1 else 0 end),sum(case when sex=2 then 1 else 0 end),count(*),sum(case when sex=1 then salary else 0 end),sum(case when sex=2 then salary else 0 end),sum(salary),

10、avg(case when sex=1 then salary end),avg(case when sex=2 then salary end),avg(salary)from employeegroup by edlevelorder by edlevel9、表 TAB1 内容:pdate result2009-05-09 胜2009-05-09 胜2009-05-09 负2009-05-09 负2009-05-10 胜2009-05-10 负2009-05-10 负如果要生成类似下列结果:日期 胜 负2009-05-09 2 22009-05-10 1 2写出 SQL 语句。Db2:Se

11、lect pdate,sum(case when result=胜 then 1 else 0 end),sum(case when result=负 then 1 else 0 end) from tab1 group by pdate10、找出数据库中所有以TB开头的表。Db2:select * from syscat.tables where tabname like TB%第三部分雇员表:EMPLOYEE(EMPNO CHARACTER(6) NOT NULL, -雇员编号,定义为主键FIRSTNME VARCHAR(12) NOT NULL, -雇员第一个名字MIDINIT CHAR

12、ACTER(1), -雇员中间名字的首字母LASTNAME VARCHAR(15) NOT NULL, -雇员最后一个名字WORKDEPT SMALLINT, -部门编号,外键,对应部门表DEPTNOPHONENO CHARACTER(4), -电话号码HIREDATE DATE, -雇用日期JOB CHARACTER(8), -工作岗位EDLEVEL SMALLINT NOT NULL, -学历 (1:中学及以下,2:大学,3:硕士及以上)SEX CHARACTER(1), -性别 (1:男,2:女)BIRTHDATE DATE, -出生日期 (60 周岁以上为退休)SALARY DECIM

13、AL(9, 2), -薪水BONUS DECIMAL(9, 2) -奖金);部门表:DEPT(DEPTNO SMALLINT NOT NULL, -部门编号,主键DEPTNAME VARCHAR(14), -部门名称MANAGER SMALLINT -部门经理编号,每个经理也是雇员表中一个雇员);1、有一个与雇员表结构一样的临时表 EMPLOYEE_TMP,存放雇员的临时信息,每天晚上 12 点需要将雇员的临时信息同步到雇员表中,如果雇员表中没有相应记录,insert,如果有,update WORKDEPT、PHONENO 、JOB 、SALARY、BONUS。使用一条 SQL 实现。Merg

14、e into employee aUsing (select * from employee_tmp) as b on a.empno=b.empnoWhen matched then update set (workdept,phoneno,job,salary,bonus)=(b. workdept,b.phoneno,b.job,b.salary,b.bonus)when not matched then insert (EMPNO, FIRSTNAME, MIDINIT, LASTNAME, WORKDEPT, PHONENO, HIREDATE, JOB, EDLEVEL, SEX,

15、 BIRTHDATE, SALARY, BONUS, COMM)values (m.EMPNO, m.FIRSTNAME, m.MIDINIT, m.LASTNAME, m.WORKDEPT, m.PHONENO, m.HIREDATE, m.JOB, m.EDLEVEL, m.SEX, m.BIRTHDATE, m.SALARY, m.BONUS, m.COMM)2、有一张表 tab1,有类似下面的记录:No name1 a2 b3 c4 d请写一条 SQL 显示以下结果:ab ac ad bc bd cdDb2:Select a.name|b.name from tab1 a,tab1 b where a.name 学号, recScore 分数) Student(stuNumber 学号 , stuName 姓名, stuClass 班级 ) 用 SQL 语句实现以下查询: 查询每一个班级中第二名的同学的姓名。Db2:with tmp as ( select a. stuName, recScore, dense_rank() over ( order by b. rec

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号