mysql公司部门员工查询例题

题目:

部门表 dept

id

name

1

研发部

2

财务部

3

市场部

员工表  epmloyee

id

name

gender

age

money

deptid

1

王五

25

3000

1

2

李明

23

2500

1

3

王二小

23

2356

2

4

陈发

22

3600

2

5

小明

21

3100

3

6

苏奇

24

2800

3

7

王丽

19

1800

1

8

李芳

18

1900

(null)

完成以下要求:

  1. 查询所有员工信息,信息内容包括(id,员工姓名,性别,年龄,工资,部门名称)两张表关联
  2. 查询出工资最高的员工,并显示员工信息
  3. 查询出每个部门工资最高的员工信息
  4. 查询所有男性员工工资总和,平均工资,最高工资,最低工资
  5. 查询工资大于平均工资的员工信息 
  6. 查询所有姓王员工的姓名和性别 
  7. 查询年龄最大的前3个员工的姓名和年龄  排序  数量限制
  8. 统计每个部门的工资总和,显示信息:部门名称,工资总和
  9. 统计每个部门的总人数,显示信息:部门名称,部门人数

实现:

   1.查询所有员工信息,信息内容包括(id,员工姓名,性别,年龄,工资,部门名称)两张表关联

思路:利用多表关联语句通过部门名称关联

SELECT 
e.id,
e.name,
e.gender,
e.age,
e.money,
d.name
FROM  epmloyee e
INNER JOIN dept d ON e.deptid=d.id

2.查询出工资最高的员工,并显示员工信息

思路:利用子表查询中标量子查询将最大的数据显示出来,然后再用where判断money是否是最大值

SELECT * FROM epmloyee WHERE money=(SELECT MAX(money) FROM epmloyee)

3.查询出每个部门工资最高的员工信息

思路:先用分组查询将每个部门中最高的工资显示出来将其作为子表然后再用inner join两张表关联起来(关联条件就是部门相同钱的值相同),如果要显示部门再关联一个部门dept表显示部门名称

SELECT * FROM epmloyee e  INNER JOIN
                         (SELECT deptid,MAX(money) m FROM epmloyee GROUP BY deptid) t
                          ON e.deptid= t.deptid AND e.money =t.m
                          INNER JOIN dept d ON e.deptid = d.id

4.查询所有男性员工工资总和,平均工资,最高工资,最低工资

思路:利用语句就可以了

SELECT 
SUM(money) '总和工资',
AVG(money) '平均工资',
MAX(money) '最高工资',
MIN(money) '最低工资'
FROM  epmloyee e
INNER JOIN dept d ON e.deptid=d.id
WHERE gender='男'

5.查询工资大于平均工资的员工信息 

思路:与第二问相似改变条件就可以了

SELECT * FROM epmloyee WHERE money>(SELECT AVG(money) FROM epmloyee)

6.查询所有姓王员工的姓名和性别 
SELECT e.*,d.name
FROM  epmloyee e
INNER JOIN dept d ON e.deptid=d.id
WHERE e.name LIKE '王%'

7.查询年龄最大的前3个员工的姓名和年龄  排序  数量限制
SELECT e.name,e.age
FROM  epmloyee e 
INNER JOIN dept d ON e.deptid=d.id 
ORDER BY e.age DESC
LIMIT 0,3

8.统计每个部门的工资总和,显示信息:部门名称,工资总和
SELECT d.name,SUM(money)
FROM  epmloyee e   
INNER JOIN dept d ON e.deptid=d.id 
GROUP BY e.deptid

9.统计每个部门的总人数,显示信息:部门名称,部门人数
SELECT d.name,COUNT(e.name)
FROM  epmloyee e   
INNER JOIN dept d ON e.deptid=d.id 
GROUP BY e.deptid

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值