首页 > 试题广场 >

在MySQL 8.0中,执行以下查询时,窗口函数的执行顺序是

[单选题]
在MySQL 8.0中,执行以下查询时,窗口函数的执行顺序是怎样的?
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会在窗口函数之前过滤
  • 报错,因为不能在同一查询中使用两个不同的窗口函数

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