📄 31道练习题.sql
字号:
--1.创建一个查询显示编号为7566的雇员的姓名和部门编号。
select ename,deptno from emp
where empno='7566'
--2.显示在10号和30号部门工作的雇员的姓名及其部门编号,并以字母顺序排列。
select ename,deptno from emp
where deptno in (10,30)
order by ename
--3.显示能挣得奖金的雇员的姓名、工资、奖金,并以工资和奖金降序排列。
select ename,sal,comm from emp
where comm is not null
order by sal desc,comm desc
--4.显示姓名中第三个字母为A的雇员的姓名。
select ename from emp
where ename like '__A%'
--5.显示工作为clerk或analyst并且工资不等于1000、3000、5000的雇员的姓名、工作及工资。
select ename,job,sal from emp
where (job='CLERK' or job='ANALYST') and sal not in (1000,3000,5000)
--6.求半径2米,高3米的圆柱体体积。
select v=2*2*PI()*3
--7.求字符串'abcdefg'的长度。
select len('abcdefg') 长度
--8.显示emp表中所有雇员姓名的开头两个字母,大写显示。
1)、select ename,upper(left(ename,2)) from emp
2)、select ename,upper(substring(ename,1,2)) from emp
--9.取字符串'abcdefg'的第2个到第5个字母。
select substring('abcdefg',2,4)
--10.计算2001年9月11日到今天已经多少天了。
select datediff(day,'2001-9-11',getdate())
--11.显示雇员的姓名、雇用日期,以及到已雇佣年份。
select ename,hiredate,datediff(year,hiredate,getdate()) '已雇佣年份'from emp
--14.编写一个查询显示从事同一工作的人数。
select job,count(*) from emp
group by job
--15.编写一个查询显示雇员最高工资和最低工资的差值(DIFFERENCE)。
select max(sal) 最高工资,min(sal) 最低工资,max(sal)-min(sal) as DIFFERENCE from emp
--16.创建查询显示所有雇员的数量以及分别在1980、1981、1982、1983年加入公司的雇员数量,
--设置恰当列标题。
select count(*),
sum(case when year(hiredate)='1980' then 1 else 0 end ) '1980年',
sum(case when year(hiredate)='1981' then 1 else 0 end ) '1981年',
sum(case when year(hiredate)='1982' then 1 else 0 end ) '1982年',
sum(case when year(hiredate)='1983' then 1 else 0 end ) '1983年'
from emp
--17.创建一查询,按工作进行分组,求出各组内分别在10、30部门工作的雇员的总人数,
--以及各组的工资合计。
--18.按部门编号及工作台进行排序。设置恰当的列标题。
--19.编写一个查询显示每个雇员的姓名、部门编号及部门名称。
select e.ename,e.deptno,d.dname from emp e join dept d on(e.deptno=d.deptno)
select e.ename,e.deptno,d.dname from emp e, dept d where e.deptno=d.deptno
--20.显示30号部门的雇员所从事的工作名称,并显示30部门的所在地。
select d.deptno,e.job,d.loc from emp e join dept d on(e.deptno=d.deptno and d.deptno=30)
select e.deptno,e.job,d.loc from emp e,dept d where e.deptno=d.deptno and d.deptno=30
--21.编写一个显示在DALLAS工作的雇员的姓名、工作、部门编号及部门名称。
select e.ename,e.job,e.deptno,d.dname from emp e,dept d
where e.deptno=d.deptno and d.loc='DALLAS'
select e.ename,e.job,e.deptno,d.dname from emp e join dept d on(e.deptno=d.deptno and d.loc='DALLAS')
--22.编写一个查询显示能获得加奖金的雇员的姓名、部门名称、部门所在地。
select e.ename,d.dname,d.loc,e.comm from emp e,dept d
where comm is not null and e.deptno=d.deptno
--23.创建一个查询显示雇员的姓名、部门编号以及与当前雇员在同一部门工作的同事的姓名为
--每个输出列设置合适的列标题。
select e1.ename,e1.deptno,e2.ename
from emp e1,emp e2
where e1.deptno=e2.deptno and e1.ename<>e2.ename
--24.创建一个查询显示雇员的姓名、工作、部门名称、工资以及工资等级。
select e.ename,e.job,d.dname,e.sal,s.grade
from emp e,dept d,salgrade s
where e.sal between losal and hisal and e.deptno=d.deptno
--25.显示比其上级管理员更早进入公司的雇员的姓名(Employee)、受雇日期(Emp Hiredate)以及其上级管理员
--的姓名(Manager)及受雇日期(Mgr Hiredate)。
select e1.ename Employee,e1.hiredate,e2.ename Manager,e2.hiredate
from emp e1,emp e2
where e1.mgr=e2.empno and e1.hiredate< e2.hiredate
--26.编写一查询,显示与Blake在同一部门工作的雇员的姓名和受雇日期,但是Blake不包含在结果内。
select ename,hiredate from emp
where deptno =(select deptno from emp where ename='BLAKE' ) and ename<>'BLAKE'
--27.创建一查询,显示工资大于平均工资水平的雇员的编号及姓名,输出结果按工资降序排列。
select deptno,ename,sal from emp
where sal>(select avg(sal) from emp)
order by sal desc
--28.显示位置在Dallas的部门内的雇员的姓名、编号及工作。
select ename,deptno,job
from emp
where deptno=(select deptno from dept where loc='DALLAS')
--29.显示被King直接管理的雇员的姓名及其工资。
select ename,sal from emp
where mgr=(select empno from emp where ename='KING')
--30.显示在Sales部门工作的雇员的部门编号、姓名及工作。
select deptno,ename,job
from emp
where deptno=(select deptno from dept where dname='SALES')
--31.编写一查询,显示能获得奖金的雇员的编号和工资同时匹配的雇员的编号和工资。
--32.显示与工作在Dallas的雇员的工资及奖金同时匹配的雇员的姓名、部门名称及工资。
--33.创建一查询,显示能获得与Scott一样工资和奖金的其他雇员的姓名、受雇日期及工资。
select ename,hiredate,sal
from emp
where sal=(select sal from emp where ename='SCOTT')
and isnull(comm,0)=(select isnull(comm,0) from emp where ename='SCOTT')
and ename<>'SCOTT'
select ename,hiredate,sal
from emp
where sal=(select sal from emp where ename='SCOTT')
and isnull(comm,-1)=(select isnull(comm,-1) from emp where ename='SCOTT') and ename<>'SCOTT'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -