SQL基础练习2

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/JAVA_I_want/article/details/102748608

数据库:
在这里插入图片描述练习题:
1.查询所有员工的FNAME、LNAME、SSN、SEX和SALARY,并分别将SEX和SALARY的列名重命名为“性别”、“工资”。
2.从Employee表中检索出员工的FNAME、LNAME、SSN、BDATE、SALARY等字段,并分别加上“名”、“姓”、“社会保险号”、“生日”、“工资”的标题。员工的排序规则为:首先按工资的降序排列,然后按FNAME的字母升序排列。
3.查询不重复的员工工资值
4.查询没有直接上司的员工姓名
5.从Employee表中查询出工资大于等于40000的员工资料
6.查询所有的女性家属的全部信息,并按生日的降序排列
7.查询所有不属于5号部门的员工信息
8.利用OR关键字查询属于1号或4号部门的员工信息
9.检索姓名为John B.Smith的员工的SSN、性别、出生日期和地址
10.查询1960年以后出生的员工信息(注意日期写完整)
11.从Employee表中查询出1960年——1970年之间出生的员工资料(注意日期写完整)
12. 从Employee表中查询出部门号为4或者5的员工资料
13. 从Employee表中查询出LNAME中含有字母o的员工资料
14. 查询项目名称以P开头的项目信息
15. 检索居住在Houston的员工所有信息
16. 从Employee表中检索出员工的FNAME、LNAME、SSN、SALARY等字段(其中SALARY需换算成人民币,汇率假定为1美元=6人民币元),并分别加上“名”、“姓”、“社会保险号”、“人民币工资”的标题。
17. 统计所有员工的平均工资
18. 查询所有员工在所有项目上每周工作的总小时数
19. 查询各个部门员工的平均工资,显示部门号和对应的平均工资值
20. 查询每个员工所有参与项目的每周工作总小时数,显示员工SSN和总小时数
21. 列出所有参与了项目的员工编号及其参与项目数
22. 统计参与了2个以上项目的员工编号和其参与项目的每周工作平均时间
23. 查询有2个以上男性员工的部门编号和该部门的总人数(包括男女员工)
24. 查询部门编号、名称及该部门经理的姓名
25. 查询所有员工(包括没有家属的员工)姓名、编号及其家属姓名
26. 查询所有为Research部门工作的员工姓名及地址
27. 对于所有位于Stafford的项目,查询项目的编号、项目负责部门编号以及该部门经理的姓、地址、生日
28. 查询有两个或以上家属的员工姓名(此题较难,若不能完成者可只查询出员工的SSN而不是姓名)
29. 查询在ProductX项目上每周工作时间超过10小时的部门5的员工姓名
30. 对于每个项目,列出项目名称以及所有员工在此项目上工作的总时间
31. 对于每个部门,列出部门名称以及此部门员工的平均工资
32. 对于每个员工(包括无上司员工),查询其姓名以及他/她的直接上司的姓名
33. 查询Company数据库中所有员工SSN与DNAME(部门名称)的组合
34. 查询有两个或以上“工资大于等于30000员工”的部门名称
35. 查询Research部门的员工姓名
36. 查询参与了项目的员工姓名。(必须用IN谓词)
37. 查询参与了项目的员工姓名。(必须用EXISTS谓词)
38. 查询没有参与任何部门5控制项目的员工姓名。
39. 查询工资超过部门5所有员工工资的员工姓名。
40. 查询参与了所有项目的员工姓名
41. 查询至少参与了所有部门4控制项目的员工姓名
42. 查询至少参与了所有John Smith参与项目的员工姓名
43. 查询至少有一个家属的部门经理姓名。(必须用EXISTS谓词)
44. 查询有两个或以上隶属员工的部门名称及其“工资大于等于30000员工”总数
45. 查询有两个或以上家属的员工姓名
46. 查询符合以下任意条件的项目编号:(1)参与此项目员工的LNAME是Smith;(2)控制此项目的部门经理的LNAME是Smith
答案:

1.select FNAME,LNAME,SSN,SEX as '性别',SALARY as '工资' from Employee
2.select FNAME as '名',LNAME as '姓',SSN as '社会保险号',BDATE '生日',SALARY as '工资' from Employee 
order by SALARY desc,FNAME asc
3.select distinct salary from Employee
4.select * from Employee where SUPERSSN is null
5.select * from Employee where SALARY>=40000
6.select * from Dependent where SEX='F' order by BDATE desc
7.select * from Employee where DNO<>5
8.select * from Employee where DNO=1 or DNO=4
9.select SSN,SEX,BDATE,ADDRESS from Employee where FNAME='John' and LNAME='Smith' and MINIT='B'
10.select * from Employee where BDATE>'1960'
11.select * from Employee where BDATE Between'1960' and '1970'
12.select * from Employee where dno in(4,5)
13.select * from Employee where LNAME like '%o%'
14.select * from Project where PNAME like 'p%'
15.select * from Employee where ADDRESS like '%Houston%'
16.select FNAME '名',LNAME '姓',SSN '社会保障号',(SALARY*6) '人民币工资' from Employee
17.select AVG(salary) from Employee
18.select SUM(HOURS) from Works_On
19.select dno,AVG(salary) '平均工资' from Employee group by dno
20.select ESSN,SUM(HOURS) '小时' from Works_On group by essn
21.select ESSN,COUNT(*) '参与项目数' from Works_On group by ESSn
22.select ESSN,AVG(HOURS) '平均时长' from Works_On group by ESSn having COUNT(*)>=2

23.select dno,count(*) '部门总人数' from Employee group by DNO,SEX having COUNT(*)>2 and SEX='M'

24.select DNUMBER,DNAME,FNAME,MINIT,LNAME from Department 
join Employee on Department.MGRSSN=Employee.SSN

25.select FNAME,MINIT,LNAME,SSN,Dependent_NAME from Employee 
left join Dependent on Employee.SSN=Dependent.ESSN

26.select FNAME,MINIT,LNAME,ADDRESS from Department 
join Employee on Department.DNUMBER=Employee.DNO 
where Department.DNAME='Research'

27.select Project.PNUMBER,Project.DNUM,Employee.LNAME,Employee.ADDRESS,Employee.BDATE
from Project 
join Department on Project.DNUM=Department.DNUMBER
join Employee on Department.MGRSSN=Employee.SSN
where Project.PLOCATION='Srafford'

28.select e.FNAME,e.MINIT,e.LNAME from Dependent d 
join Employee e on d.ESSN=e.SSN
group by e.FNAME,e.MINIT,e.LNAME
having COUNT(d.ESSN)>=2

29.select FNAME,MINIT,LNAME from Project 
join Works_On on Project.PNUMBER=Works_On.PNO
join Employee on Works_On.ESSN=Employee.SSN
where Works_On.HOURS>10 and Employee.DNO=5 and Project.PNAME='ProductX'

30.select Project.PNAME,SUM(Works_On.HOURS) '工作总时长' from Project
join Works_On on Project.PNUMBER=Works_On.PNO
group by Project.PNAME

31.select Department.DNAME,AVG(SALARY) '部门平均工资' from Department
join Employee on Department.DNUMBER=Employee.DNO
group by Department.DNAME

32.select e1.FNAME,e1.MINIT,e1.LNAME,e2.FNAME,e2.MINIT,e2.LNAME 
from Employee e1 
left join Employee e2 on e1.SUPERSSN=e2.SSN

33.select Department.DNAME,Employee.SSN from Department 
join Employee on Department.DNUMBER=Employee.DNO

34.select Department.DNAME ,count(*) from Employee 
join Department on Employee.DNO=Department.DNUMBER
where SALARY>=30000 
group by Department.DNAME

35.select t.FNAME,t.MINIT,t.LNAME from 
(select * from Department 
join Employee on Department.DNUMBER=Employee.DNO
where Department.DNAME='Research') t


36.select FNAME,MINIT,LNAME from Employee 
where SSN in(select distinct ESSN from  Works_On)

37.SELECT distinct Employee.FNAME,Employee.MINIT,Employee.LNAME FROM Works_On 
join Employee on Employee.SSN=Works_On.ESSN
where exists(select * from Employee where Employee.SSN=Works_On.ESSN)

38.select FNAME,MINIT,LNAME from Employee where SSN 
in(select ESSN from Works_On where PNO
in (select PNUMBER from Project where DNUM<>5))

39.select * from Employee where SALARY>(
select MAX(salary) from Employee where DNO=5) 

40.select essn,COUNT(*) from Works_On 
group by ESSN
having count(*)=(select count(PNUMBER) from Project )
select FNAME,MINIT,LNAME from Employee where SSN in(
select distinct essn from Works_On where PNO 
in(select PNUMBER from Project where DNUM=4))

41.select FNAME,MINIT,LNAME from Employee where SSN in(
select distinct essn from Works_On where PNO 
in(select PNUMBER from Project where DNUM=4))

42.select FNAME,MINIT,LNAME from Employee where SSN in(
select distinct ESSN from Works_On where PNO in(
select pno from Works_On where ESSN=(
select SSN from Employee where FNAME='John' and LNAME='Smith')) 
and ESSN<>(select SSN from Employee where FNAME='John' and LNAME='Smith'))

43.select FNAME,MINIT,LNAME from Employee where SSN in(
select distinct MGRSSN from Department 
join Dependent on Department.MGRSSN=Dependent.ESSN  where exists(
select ESSN from Dependent 
group by essn))

44.select COUNT(*) from Employee where DNO in(
select dno from Employee 
group by DNO 
having COUNT(*)>=2) and SALARY>=30000

45.select FNAME,MINIT,LNAME from Employee where SSN in(
select ESSN from Dependent 
group by ESSN
having COUNT(*)>=2)

46.select PNO from Works_On where ESSN=(
select SSN from Employee where LNAME='Smith')
or PNO=(
select PNUMBER from project where DNUM=(
(select DNUMBER from Employee 
join Department on Employee.SSN=Department.MGRSSN
where LNAME='Smith')))

猜你喜欢

转载自blog.csdn.net/JAVA_I_want/article/details/102748608