1)查询工作年限大于3年的雇员信息,返回雇员号、姓名、年龄、地址、薪水、部门名称、工作年限。 2)查询同时在三个部门工作的雇员和姓名。 3)统计各部门的职工的工资总额,并按照总额大小降序排列。 4)查询和其部门经理住址相同的员工的姓名及经理姓名。
时间: 2024-11-18 08:18:49 浏览: 21
以下是针对您提出的四个查询任务的 SQL 语句:
### 1. 查询工作年限大于3年的雇员信息,返回雇员号、姓名、年龄、地址、薪水、部门名称、工作年限。
```sql
SELECT e.eno AS 雇员号,
e.ename AS 姓名,
e.eage AS 年龄,
e.eaddress AS 地址,
e.esalary AS 薪水,
d.dname AS 部门名称,
j.duration AS 工作年限
FROM employees e
JOIN jobs j ON e.eno = j.eno
JOIN departments d ON j.dno = d.dno
WHERE j.duration > 3;
```
### 2. 查询同时在三个部门工作的雇员和姓名。
```sql
SELECT e.eno AS 雇员号,
e.ename AS 姓名
FROM employees e
JOIN (
SELECT eno
FROM jobs
GROUP BY eno
HAVING COUNT(DISTINCT dno) >= 3
) subq ON e.eno = subq.eno;
```
### 3. 统计各部门的职工的工资总额,并按照总额大小降序排列。
```sql
SELECT d.dname AS 部门名称,
SUM(e.esalary) AS 工资总额
FROM employees e
JOIN jobs j ON e.eno = j.eno
JOIN departments d ON j.dno = d.dno
GROUP BY d.dname
ORDER BY 工资总额 DESC;
```
### 4. 查询和其部门经理住址相同的员工的姓名及经理姓名。
```sql
SELECT e1.ename AS 员工姓名,
e2.ename AS 经理姓名
FROM employees e1
JOIN jobs j ON e1.eno = j.eno
JOIN departments d ON j.dno = d.dno
JOIN employees e2 ON d.dmanager = e2.eno
WHERE e1.eaddress = e2.eaddress;
```
这些 SQL 语句分别实现了您的查询需求,希望对您有所帮助。
阅读全文