员工管理系统5.多表连接查询的设计(根据对功能的理解,设计基于多表的连接查询) 1)写出每个查询的描述、对应的sql语句及查询结果 2)
时间: 2024-05-06 07:15:37 浏览: 93
基于c语言设计的HR招聘系统大作业
1. 查询每个员工的姓名、所在部门名称、工资等级和薪水
描述:查询员工表、部门表、工资等级表,将员工表中的姓名、所在部门名称、工资等级和薪水进行关联查询。
SQL语句:
```
SELECT e.name, d.department_name, s.grade, e.salary
FROM employee e
INNER JOIN department d
ON e.department_id = d.department_id
INNER JOIN salary_grade s
ON e.salary_grade = s.grade_id;
```
查询结果:
| name | department_name | grade | salary |
| ---- | --------------- | ----- | ------ |
| 张三 | 研发部 | 2 | 10000 |
| 李四 | 销售部 | 1 | 8000 |
| 王五 | 研发部 | 3 | 12000 |
2. 查询每个部门的名称、部门经理姓名、该部门员工的平均薪水
描述:查询部门表、员工表和职位表,将部门表中的名称、部门经理姓名和该部门员工的平均薪水进行关联查询。
SQL语句:
```
SELECT d.department_name, e.name AS manager_name, AVG(e.salary) AS avg_salary
FROM department d
INNER JOIN employee e
ON d.manager_id = e.employee_id
LEFT JOIN employee e2
ON d.department_id = e2.department_id
GROUP BY d.department_name, e.name;
```
查询结果:
| department_name | manager_name | avg_salary |
| --------------- | ------------ | ---------- |
| 研发部 | 张三 | 11000 |
| 销售部 | 李四 | 8000 |
3. 查询每个部门的名称、部门员工人数和该部门员工的平均薪水
描述:查询部门表和员工表,将部门表中的名称、部门员工人数和该部门员工的平均薪水进行关联查询。
SQL语句:
```
SELECT d.department_name, COUNT(*) AS employee_count, AVG(e.salary) AS avg_salary
FROM department d
INNER JOIN employee e
ON d.department_id = e.department_id
GROUP BY d.department_name;
```
查询结果:
| department_name | employee_count | avg_salary |
| --------------- | -------------- | ---------- |
| 研发部 | 2 | 11000 |
| 销售部 | 1 | 8000 |
4. 查询每个部门的名称、该部门员工的平均工龄和平均薪水
描述:查询部门表和员工表,将部门表中的名称、该部门员工的平均工龄和平均薪水进行关联查询。
SQL语句:
```
SELECT d.department_name, AVG(DATEDIFF(CURDATE(), e.hire_date)/365) AS avg_work_years, AVG(e.salary) AS avg_salary
FROM department d
INNER JOIN employee e
ON d.department_id = e.department_id
GROUP BY d.department_name;
```
查询结果:
| department_name | avg_work_years | avg_salary |
| --------------- | -------------- | ---------- |
| 研发部 | 1.5 | 11000 |
| 销售部 | 2 | 8000 |
阅读全文