Bac*_*ria 2 sql oracle aggregate-functions oracle11g
我有一张员工表。请在下面找到表结构和数据。
我想找到最高工资和最低工资以及员工姓名。
预期输出将是:
为了找出最高工资以及员工姓名,我编写了以下查询:
SELECT name,salary FROM employee where salary
= (select max(salary) from employee);
Run Code Online (Sandbox Code Playgroud)
为了找出最低工资以及员工姓名,我编写了以下查询:
SELECT name,salary FROM employee where salary
= (select min(salary) from employee);
Run Code Online (Sandbox Code Playgroud)
但我无法合并这两个查询。
有人可以指导我构建 SQL 查询,该查询将返回最高工资和最低工资以及员工姓名吗?
这是一种方法,使用RANK
. 该答案只需通过 CTE 即可找到员工表中排名最低和最高的工资。然后,它仅子查询一次以检索完整的匹配记录。
WITH cte AS (
SELECT NAME, SALARY,
RANK() OVER (ORDER BY SALARY) rnk_min,
RANK() OVER (ORDER BY SALARY DESC) rnk_max
FROM employee
)
SELECT NAME, SALARY
FROM cte
WHERE rnk_min = 1 OR rnk_max = 1
ORDER BY SALARY;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
67536 次 |
最近记录: |