MySQL小练习

这写代码需要的表在MySQL表格

-- 列出至少有三个员工的所有部门和部门信息
-- 列出薪金比“ALLEN”多的所有员工
SELECT*FROM emp WHERE SAL > (SELECT	sal FROM emp WHERE ENAME = 'allen') 
-- 28.列出所有员工的姓名及其上级的姓名:
-- SELECT EMP1.EMPNO '员工编号', EMP1.ENAME '员工姓名',EMP2.ENAME '领导姓名' FROM EMP EMP1,EMP EMP2 WHERE EMP1.MGR=EMP2.EMPNO;
	SELECT emp1.EMPNO '员工编号',emp1.ENAME '员工姓名',emp2.ename '老板姓名' FROM emp emp1,emp emp2 WHERE emp1.MGR = emp2.EMPNO;

-- 29.列出受雇日期早于直接上级的所有员工的编号,姓名,部门名称
SELECT emp1.EMPNO '员工编号',emp1.ENAME '员工姓名',emp1.DEPTNO '部门'FROM	emp emp1,	emp emp2 WHERE emp1.MGR = emp2.EMPNO AND emp1.HIREDATE > emp2.HIREDATE;

-- 30.列出部门名称和这些部门员工的信息,同时列出那些没有员工的部门。
SELECT*FROM DEPT D LEFT JOIN EMP E ON D.DEPTNO = E.DEPTNO;

-- 31.列出“CLERK”的姓名和部门名称,部门人数:
SELECT ENAME,dept.DNAME,COUNT(*) FROM emp ,dept WHERE emp.DEPTNO=dept.DEPTNO AND emp.JOB='CLERK';

-- 32.列出最低薪金大于1500的各种工作以及从事此工作的全部雇员人数
SELECT JOB,COUNT(*) FROM `emp` WHERE SAL>1500 GROUP BY JOB;

-- 33.列出在部门销售部工作的员工姓名,假设不知道销售部的部门编号
SELECT job,ename FROM `emp` WHERE JOB='SALESMAN'

-- 34.列出薪金高于工资平均薪金的所有员工,所在部门,上级领导,公司的工资等级。
SELECT ENAME FROM `emp` WHERE sal>AVG(SAL)

SELECT AVG(SAL) A,DEPTNO FROM EMP  GROUP BY DEPTNO HAVING
A>(SELECT AVG(SAL) FROM EMP)

-- 35.列出和“SCOTT”从事相同工作的所有员工及部门名称:
SELECT ENAME'员工',DEPTNO'部门' FROM `emp` WHERE  JOB=(SELECT JOB FROM `emp` where ENAME='SCOTT')AND ENAME !='SCOTT';


-- 36.列出薪金等于部门30中员工薪金的所有员工的姓名和薪金
SELECT ENAME '名字',SAL'薪金' FROM `emp` WHERE SAL in(SELECT SAL FROM `emp` WHERE DEPTNO='30') AND DEPTNO !='30';

-- 37.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称
SELECT ENAME '名字',SAL'薪金' ,dept.DNAME FROM `emp`,dept WHERE SAL >(SELECT MAX(SAL) FROM `emp` WHERE DEPTNO='30')AND emp.DEPTNO=dept.DEPTNO;

-- 38.列出每个部门工作的员工数量、平均工资和平均服务期限
SELECT AVG(SAL),COUNT(*), FROM emp GROUP BY DEPTNO;

-- 39.列出所有员工的姓名、部门和工资
SELECT ename,dept.DNAME,sal FROM emp,dept WHERE emp.DEPTNO=dept.DEPTNO;

-- 40.列出所有部门的详细信息和部门人数
SELECT COUNT(*)'人数',dept.DNAME '部门'FROM `emp`,`dept` GROUP BY JOB

-- 41、列出各种工作的最低工资以及从事此工作的雇员姓名:
SELECT a.s,e.ename,e.job from emp e,(SELECT MIN(sal) s,job,deptno from emp GROUP BY job) a WHERE e.job=a.job and e.sal=a.s;

-- 42、列出各个部门的MANAGER 的最低薪金:
(SELECT SAL FROM `emp` WHERE JOB='MANAGER');
SELECT MIN(SAL),DEPTNO FROM `emp`  GROUP BY DEPTNO;


-- 42、列出各个部门的MANAGER 的最低薪金
SELECT MIN(sal),deptno,job,ENAME from emp WHERE job='MANAGER' GROUP BY deptno

-- 43、列出所有员工的年工资,按照年薪从低到高排序:
SELECT *,SAL*12'年薪' FROM emp ORDER BY 年薪 ASC;
SELECT ENAME,SAL*14+IFNULL(COMM,0)*12 '年收入' FROM EMP ORDER BY 年收入 ASC;


-- 44、查询出某个员工的上级主管,并要求这些主管中的薪水超过3000
	SELECT emp1.EMPNO '员工编号',emp1.ENAME '员工姓名',emp2.ename '老板姓名' FROM emp emp1,emp emp2 WHERE emp1.MGR = emp2.EMPNO AND emp2.SAL>3000;

-- 45、求出部门名称中带有’S‘字符的部门员工的工资合计,部门人数
SELECT SUM(SAL) ,COUNT(*),dept.DNAME FROM `emp` ,dept WHERE emp.DEPTNO=dept.DEPTNO AND dept.DNAME LIKE '%S%'; 

-- 46、给任职日期超过10年的人加薪10%;
SELECT SAL*1.1,ENAME FROM `emp` WHERE DATE_SUB(HIREDATE,INTERVAL 10 YEAR);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小郑要做干饭人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值