出一道Oracle的题并给出答案,范围:SQL高级
时间: 2023-03-01 14:01:49 浏览: 122
好的,下面是一道 Oracle 的 SQL 高级题目:
某公司有三张表:部门表(DEPARTMENTS),员工表(EMPLOYEES)和工资表(SALARIES)。
部门表包含以下字段:
- DEPARTMENT_ID:部门编号,主键
- DEPARTMENT_NAME:部门名称
员工表包含以下字段:
- EMPLOYEE_ID:员工编号,主键
- NAME:员工姓名
- DEPARTMENT_ID:员工所属部门编号,外键
工资表包含以下字段:
- EMPLOYEE_ID:员工编号,外键
- SALARY:工资
- FROM_DATE:生效日期
- TO_DATE:失效日期
请写一个 SQL 查询,查询出每个部门的平均工资,按照平均工资从高到低排序,并且只查询平均工资前 10 高的部门。
答案:
```
SELECT d.department_name, AVG(s.salary) as avg_salary
FROM departments d
JOIN employees e ON d.department_id = e.department_id
JOIN salaries s ON e.employee_id = s.employee_id
GROUP BY d.department_id, d.department_name
ORDER BY avg_salary DESC
LIMIT 10;
```
阅读全文