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

mysql公司部门员工查询例题_第1张图片

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)

mysql公司部门员工查询例题_第2张图片

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

mysql公司部门员工查询例题_第3张图片

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

mysql公司部门员工查询例题_第4张图片

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

mysql公司部门员工查询例题_第5张图片

你可能感兴趣的:(mysql,数据库)