MySQL查询

文章展示了多个SQL查询示例,包括按部门编号筛选员工、查找特定职位员工、比较奖金与工资、按条件组合查询、分组统计平均工资和员工数量等。同时,也包含使用LEFTJOIN连接部门和员工表以获取部门员工详情的查询。
摘要由CSDN通过智能技术生成

一、

 

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值