2022.7.11mySQL作业

1.查询入职时间在1982-7-9之后,并且不从事SALESMAN工作的员工姓名、入职时间、职位。

SELECT ename,hiredate,job
FROM emp
WHERE HIREDATE>'1982-7-9' AND JOB<>'SALESMAN';

在这里插入图片描述

  1. 查询员工姓名的第三个字母是a的员工姓名。
SELECT ename
FROM emp
WHERE ename LIKE '__a%';

在这里插入图片描述

  1. 查询除了10、20号部门以外的员工姓名、部门编号。
SELECT ename,deptno
FROM emp
WHERE deptno<>10 AND deptno<>20;

在这里插入图片描述
4. 查询部门号为30号员工的信息,先按工资降序排序,再按姓名升序排序。

SELECT *
FROM emp
WHERE deptno=30
ORDER BY sal DESC,ename;

在这里插入图片描述
5.查询没有上级的员工(经理号为空)的员工姓名。

SELECT ename
FROM emp
WHERE mgr is NULL;

在这里插入图片描述
5. 查询工资大于等于4500并且部门为10或者20的员工的姓名、工资、部门编号。

SELECT ename,sal,deptno
FROM emp
WHERE sal>=4500 AND (deptno=10 OR deptno=20); 

在这里插入图片描述
6. 显示员工SMITH的姓名,部门名称,直接上级名称

SELECT a.ename,d.dname,a.mgr
FROM emp a,emp b,dept d
WHERE a.deptno=d.deptno AND a.mgr=b.empno AND a.ename='SMITH';

在这里插入图片描述
7. 显示员工姓名,部门名称,工资,工资级别,要求工资级别大于4级。
(三个表连接至少要有两个连接条件)

SELECT e.ename,d.dname,e.sal,s.grade
FROM emp e,dept d,salgrade s
WHERE e.deptno=d.deptno AND e.sal BETWEEN s.losal AND s.hisal AND grade>4;
  1. 显示员工KING和FORD管理的员工姓名及其经理姓名。
SELECT w.ename,m.ename
FROM emp w,emp m
WHERE w.mgr=m.empno AND m.ename='KING' or m.ename='FORD';
  1. 显示员工姓名,参加工作时间,经理名,参加工作时间,要求参加工作时间比经理早。
SELECT w.ename '员工姓名',w.hiredate '员工参加工作时间',m.ename '经理姓名',m.hiredate '经理参加工作时间'
FROM emp w,emp m
WHERE w.mgr=m.empno AND w.hiredate<m.hiredate;
  1. 查询部门平均工资在2500元以上的部门名称及平均工资。
SELECT dname,avg(sal)
FROM emp e join dept d on e.deptno=d.deptno
GROUP BY e.deptno
HAVING avg(sal)>2500;
  1. 查询员工岗位中不是以“SA”开头并且平均工资在2500元以上的岗位及平均工资,并按平均工资降序排序。
SELECT job,AVG(sal)
FROM emp
GROUP BY job
HAVING job NOT LIKE 'SA%' AND AVG(sal)>2500
ORDER BY AVG(sal) DESC;

在这里插入图片描述
12. 查询部门人数在2人以上的部门名称、最低工资、最高工资。

SELECT d.deptno,d.dname,COUNT(*)
FROM emp e,dept d
WHERE e.deptno=d.deptno
GROUP BY d.deptno
HAVING COUNT(*)>2;

在这里插入图片描述
14. 查询岗位不为SALESMAN,工资和大于等于2500的岗位及每种岗位的工资和。
SELECT job,SUM(sal)
FROM emp
GROUP BY job
HAVING job<>‘SALESMAN’ AND SUM(sal)>=2500;

  1. 显示经理号码和经理姓名,这个经理所管理员工的最低工资,没有经理的KING也要显示,不包括最低工资小于3000的,按最低工资由高到低排序
SELECT m.empno,m.ename,MIN(e.sal)
FROM emp e LEFT JOIN emp m on e.mgr=m.empno
GROUP BY m.mgr
HAVING min(e.sal)>3000
ORDER BY MIN(e.sal)DESC;

  1. 查询工资高于编号为7782的员工工资,并且和7369号员工从事相同工作的员工的编号、姓名及工资。
    SELECT empno,ename,sal
    FROM emp
    WHERE sal>(SELECT sal FROM emp WHERE empno=7782) AND job=(SELECT job FROM emp WHERE empno=7369);

  2. 查询工资最高的员工姓名和工资。
    SELECT ename,sal
    FROM emp
    WHERE sal>=all(SELECT sal FROM emp);

  3. 查询部门最低工资高于10号部门最低工资的部门的编号、名称及部门最低工资。

SELECT e.deptno,d.dname,MIN(sal)
FROM emp e JOIN dept d ON e.deptno=d.deptno
GROUP BY e.deptno
HAVING min(sal)>(SELECT min(sal) FROM emp WHERE deptno=10);
  1. 查询员工工资为其部门最低工资的员工的编号和姓名及工资。
    (在from子句中使用子查询)
SELECT a.empno,a.ename,a.sal
FROM emp a,(SELECT deptno, MIN(sal) minsal FROM emp GROUP BY deptno) b
WHERE a.deptno=b.deptno AND a.sal=minsal;

在这里插入图片描述
22. 显示经理是KING的员工姓名,工资。

SELECT ename,sal
FROM emp
WHERE mgr=(SELECT empno FROM emp WHERE ename='KING');

在这里插入图片描述
23. 显示比员工SMITH参加工作时间晚的员工姓名,工资,参加工作时间。

SELECT ename,sal,hiredate
FROM emp
WHERE hiredate>(SELECT hiredate FROM emp WHERE ename='SMITH');
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值