出一道Oracle的题并给出答案,范围:SQL高级
时间: 2023-03-01 17:01:49 浏览: 85
好的,下面是一道 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;
```
相关问题
ORACLE SQL 里面AND 和 OR 谁优先执行?给出代码示例
在 Oracle SQL 中,AND 操作符比 OR 操作符具有更高的优先级。具体来说,AND 操作符要先于 OR 操作符执行。
以下是一个简单的代码示例:
```
SELECT *
FROM my_table
WHERE column1 = 'value1' OR column2 = 'value2' AND column3 = 'value3';
```
在这个示例中,AND 操作符将首先执行,然后是 OR 操作符。如果我们希望 OR 操作符先执行,则需要使用圆括号来明确优先级:
```
SELECT *
FROM my_table
WHERE (column1 = 'value1' OR column2 = 'value2') AND column3 = 'value3';
```
在这个示例中,OR 操作符将首先执行,然后是 AND 操作符。
请写出oracle SQL语句:查询时间列是代表今天的数据
您好,以下是查询时间列是代表今天的数据的 Oracle SQL 语句:
```
SELECT *
FROM your_table
WHERE TRUNC(your_time_column) = TRUNC(SYSDATE);
```
其中,`your_table` 是您要查询的表名,`your_time_column` 是代表时间的列名。`TRUNC(your_time_column)` 函数将时间列的时间部分截取掉,只保留日期部分;`TRUNC(SYSDATE)` 函数获取当前日期,同样只保留日期部分。比较这两个截取后的日期是否相等,即可查询时间列是代表今天的数据。