一、
1、查询出部门编号为30的所有员工:
SELECT * FROM emp WHERE deptno = 30;
2、所有销售员的姓名、编号和部门编号:
SELECT ename, empno, deptno FROM emp WHERE job = '销售员';
3、找出奖金高于工资的员工:
SELECT * FROM emp WHERE comm > sai;
4、找出奖金高于工资60%的员工:
SELECT * FROM emp WHERE comm > (sai * 0.6);
5、找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料:
SELECT * FROM emp WHERE (deptno = 10 AND job = '经理') OR (deptno = 20 AND job = '销售员');
6、找出部门编号为10中所有经理,部门编号为20中所有销售员,还有即不是经理又不是销售员但其工资大于或等于20000的所有员工详细资料:
SELECT * FROM emp WHERE (deptno = 10 AND job = '经理')
OR (deptno = 20 AND job = '销售员')
OR (job NOT IN ('经理', '销售员') AND sai >= 20000);
7、无奖金或奖金低于1000的员工:
SELECT * FROM emp WHERE comm IS NULL OR comm < 1000;
8、查询名字由三个字组成的员工:
SELECT * FROM emp WHERE LENGTH(ename) = 9;
9、查询2000年入职的员工:
SELECT * FROM emp WHERE YEAR(hiredate) = 2000;
10、查询所有员工详细信息,并按编号升序排序:
SELECT * FROM emp ORDER BY empno ASC;
11、查询所有员工详细信息,按工资降序排序,如果工资相同则按入职日期升序排序:
SELECT * FROM emp ORDER BY sai DESC, hiredate ASC;
12、查询每个部门的平均工资:
SELECT deptno, AVG(sai) AS 平均工资 FROM emp GROUP BY deptno;
13、查询每个部门的雇员数量:
SELECT deptno, COUNT(*) AS 雇员数量 FROM emp GROUP BY deptno;
14、查询每种工作的最高工资、最低工资、人数:
SELECT job, MAX(sai) AS 最高工资, MIN(sai) AS 最低工资, COUNT(*) AS 人数 FROM emp GROUP BY job;
二、
1、查询每个部门的所属员工
mysql> SELECT d.name AS 部门名字, e.ename AS 员工名字
-> FROM dept3 AS d
-> LEFT JOIN emp3 AS e ON d.deptno = e.dept_id;
+--------------+--------------+
| 部门名字 | 员工名字 |
+--------------+--------------+
| 研发部 | 乔峰 |
| 研发部 | 段誉 |
| 研发部 | 虚竹 |
| 研发部 | 阿紫 |
| 销售部 | 扫地僧 |
| 销售部 | 李秋水 |
| 销售部 | 鸠摩智 |
| 财务部 | 天山童姥 |
| 财务部 | 慕容博 |
| 人事部 | NULL |
+--------------+--------------+
10 rows in set (0.00 sec)
2、查询研发部门的所属员工
mysql> SELECT d.name AS 部门名字, e.ename AS 员工名字 FROM dept3 AS d LEFT JOIN emp3 AS e ON d.deptno = e.dept_id WHERE d.deptno = 1001;
+--------------+--------------+
| 部门名字 | 员工名字 |
+--------------+--------------+
| 研发部 | 乔峰 |
| 研发部 | 段誉 |
| 研发部 | 虚竹 |
| 研发部 | 阿紫 |
+--------------+--------------+
4 rows in set (0.01 sec)
3、查询研发部和销售部的所属员工
mysql> SELECT d.name AS 部门名字, e.ename AS 员工名字 FROM dept3 AS d LEFT JOIN emp3 AS e ON d.deptno = e.dept_id WHERE d.deptno = 1001 or d.deptno=1002 ;
+--------------+--------------+
| 部门名字 | 员工名字 |
+--------------+--------------+
| 研发部 | 乔峰 |
| 研发部 | 段誉 |
| 研发部 | 虚竹 |
| 研发部 | 阿紫 |
| 销售部 | 扫地僧 |
| 销售部 | 李秋水 |
| 销售部 | 鸠摩智 |
+--------------+--------------+
7 rows in set (0.00 sec)
4、查询每个部门的员工数,并升序排序
mysql> SELECT d.name AS 部门名字, COUNT(e.eid) AS 员工数
-> FROM dept3 d
-> LEFT JOIN emp3 e ON d.deptno = e.dept_id
-> GROUP BY d.deptno, d.name
-> ORDER BY COUNT(e.eid) ASC;
+--------------+-----------+
| 部门名字 | 员工数 |
+--------------+-----------+
| 人事部 | 0 |
| 财务部 | 2 |
| 销售部 | 3 |
| 研发部 | 4 |
+--------------+-----------+
4 rows in set (0.00 sec)
5、查询人数大于等于3的部门,并按照人数降序排序
mysql> SELECT d.name AS 部门名字, COUNT(e.eid) AS 员工数 FROM dept3 d LEFT JOIN emp3 e ON d.deptno = e.dept_id GROUP BY d.deptno, d.name HAVING 员工数 >= 3 ORDER BY COUNT(e.eid) ASC;
+--------------+-----------+
| 部门名字 | 员工数 |
+--------------+-----------+
| 销售部 | 3 |
| 研发部 | 4 |
+--------------+-----------+
2 rows in set (0.00 sec)