您当前的位置: 首页 > 

梁云亮

暂无认证

  • 2浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

基于emp的 单表查询 练习题及答案

梁云亮 发布时间:2021-06-24 11:31:46 ,浏览量:2

有关tb_emp表的结构及数据,请参看博客:https://hcshow.blog.csdn.net/article/details/101469279

单表查询
  • 选择部门30中的雇员
select * 
from tb_emp
where deptno =30
  • 列出所有办事员的姓名、编号和部门
select empno,ename,dptno
from tb_emp 
  • 找出佣金高于薪金的雇员
select *
from tb_emp
where comm > sal
  • 找出佣金高于薪金60%的雇员
select *
from tb_emp
where comm > sal*0.6
  • 检索tb_emp表中的员工姓名、月收入及部门编号
SELECT ename as 姓名,sal+IFNULL(comm,0) 工资,deptno 部门编号 
FROM tb_emp;
  • 检索tb_emp表中员工姓名、及雇佣时间
SELECT ename ,hiredate 
FROM tb_emp;
  • 使用distinct去掉重复行。
SELECT DISTINCT deptno 
from tb_emp;
  • 检索tb_emp表中的员工姓名及全年的收入
SELECT ename 员工,(sal+ifnull(comm,0))*12 总收入 
from tb_emp;
  • 检索月收入大于2000的员工姓名及月收入
SELECT ename , sal+IFNULL(comm,0) 
FROM tb_emp
WHERE  sal+IFNULL(comm,0) > 2000;
  • 检索以S开头的员工姓名及月收入。
SELECT ename , sal+IFNULL(comm,0) 
FROM tb_emp
WHERE  ename LIKE 'S%';
  • 检索tb_emp表中月收入是800的或是1250的员工姓名及部门编号
SELECT ename,deptno,sal
from tb_emp
WHERE sal = 800 || sal = 1250

SELECT ename,deptno,sal
from tb_emp
WHERE sal = 800 OR sal = 1250
  • 显示在部门20中岗位CLERK的所有雇员信息
SELECT *
FROM tb_emp
WHERE deptno = 20 && job = 'clerk'

SELECT *
FROM tb_emp
WHERE deptno = 20 and job = 'clerk'
  • 显示工资高于2500或岗位为MANAGER的所有雇员信息
SELECT *
FROM tb_emp
WHERE sal >2500 AND job ='MANAGER';
  • 检索tb_emp表中有提成的员工姓名、月收入及提成。
SELECT ename,sal,comm
FROM tb_emp
WHERE !ISNULL(comm) 

SELECT ename,sal,comm
FROM tb_emp
WHERE NOT ISNULL(comm)
  • 检索tb_emp表中部门编号是30的员工姓名、月收入及提成,并要求其结果按月收入升序、然后按提成降序显示。
SELECT ename,sal,comm,deptno
FROM tb_emp
WHERE deptno = 30
ORDER BY sal ASC , comm DESC
  • 查询工资大于1200的员工姓名和工资
SELECT ename,sal
FROM tb_emp
WHERE sal>1200
  • 查询员工号为7934的员工的姓名和部门号
select ename,deptno
from tb_emp
where empno=7934
  • 选择工资不在5000到12000的员工的姓名和工资
SELECT ename,sal
FROM tb_emp
WHERE sal 12000
  • 选择雇用时间在1981-02-01到1981-05-01之间的员工姓名,职位(job)和雇用时间,按从早到晚排序.
SELECT ename,job,hiredate
FROM tb_emp
WHERE hiredate BETWEEN '1981-02-01' AND '1981-05-01'
ORDER BY hiredate ASC
  • 选择在20或10号部门工作的员工姓名和部门号
SELECT ename,deptno
FROM tb_emp
WHERE deptno =20 OR deptno = 10
  • 选择在1987年雇用的员工的姓名和雇用时间
SELECT ename,hiredate
FROM tb_emp
WHERE YEAR(hiredate) = '1987'
  • 选择公司中没有上级的员工姓名及job
SELECT ename,job
FROM tb_emp
WHERE ISNULL(mgr)
  • 选择公司中不是管理者的员工姓名及job
SELECT ename,job
FROM tb_emp
WHERE job != 'MANAGER'
  • 选择公司中有奖金 (COMM不为空,且不为0) 的员工姓名,工资和奖金比例,按工资逆排序,奖金比例逆排序.
SELECT ename,comm,sal+comm,comm/(sal+comm)
FROM tb_emp
WHERE NOT ISNULL(comm) AND comm != 0
ORDER BY sal+comm DESC ,comm/(sal+comm) DESC
  • 选择员工姓名的第三个字母是a的员工姓名
SELECT * 
FROM tb_emp
WHERE ename like '__a%'
  • 找出部门10中所有经理和部门20中的所有办事员的详细资料
SELECT * 
FROM tb_emp
WHERE (deptno =10 and job = 'manager') OR (deptno =20 and job = 'clerk')
  • 找出部门10中所有经理、部门20中所有办事员,既不是经理又不是办事员但其薪金>=2000的所有雇员的详细资料
SELECT * 
FROM tb_emp
WHERE (deptno =10 and job = 'manager') OR
(deptno =20 and job = 'clerk') OR
(job != 'manager' and job != 'clerk' and sal>2000)
  • 找出收取佣金的雇员的不同工作
SELECT DISTINCT job
FROM tb_emp
WHERE comm !=0
  • 找出不收取佣金或收取的佣金低于100的雇员
select *
from tb_emp
where comm = null or comm=0 or comm (SELECT sal
FROM tb_emp
where ename= 'smith')
  • 列出薪金高于公司平均薪金的所有员工。
SELECT *
from tb_emp
WHERE sal>(SELECT avg(sal)
FROM tb_emp)
  • 列出与“SCOTT”从事相同工作的所有员工。
SELECT *
from tb_emp
WHERE job = (SELECT job
from tb_emp
where ename = 'scott')
  • 求出30部门工资的最大值与最小值,然后列出其它部门工资在这个范围的员工的信息
SELECT ename,sal,deptno
from tb_emp
WHERE sal BETWEEN (SELECT min(sal)
FROM tb_emp
WHERE deptno =30) and (SELECT max(sal)
FROM tb_emp
WHERE deptno =30) and deptno != 30
  • 列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。
SELECT ename,sal,deptno
from tb_emp
where sal> (SELECT max(sal)
FROM tb_emp
WHERE deptno =30) and deptno !=30
多表查询/连接查询/关联查询
  • 列出受雇日期早于其直接上级的所有员工。
SELECT e1.ename,e1.hiredate , e2.hiredate
FROM tb_emp e1
JOIN tb_emp e2 ON e1.mgr = e2.empno
where e1.hiredate             
关注
打赏
1665409997
查看更多评论
0.0438s