SELECT department_id, employee_name, salary,
RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rnk,
SUM(salary) OVER (PARTITION BY department_id) AS dept_total
FROM employees
WHERE salary > 5000
HAVING rnk <= 3;
该查询会:
正常执行,返回每个部门薪资前3名且薪资大于5000的员工
报错,因为HAVING不能直接引用窗口函数的别名
正常执行,但HAVING会在窗口函数之前过滤
报错,因为不能在同一查询中使用两个不同的窗口函数

这道题你会答吗?花几分钟告诉大家答案吧!