MySQL 最新版本支持開窗函數(shù),這是一種強(qiáng)大的 SQL 技術(shù),可以在查詢數(shù)據(jù)時(shí)進(jìn)行更高級(jí)的分析和計(jì)算。
SELECT employee_id, first_name, last_name, salary, AVG(salary) OVER (PARTITION BY department_id) AS department_avg, RANK() OVER (ORDER BY salary DESC) AS rank_salary FROM employees;
以上是一個(gè)示例查詢語句,包含了兩個(gè)開窗函數(shù):AVG 和 RANK。
AVG函數(shù)將按照部門對(duì)員工薪資進(jìn)行平均,并通過 PARTITION BY 子句進(jìn)行分區(qū),結(jié)果將作為 department_avg 列返回。RANK 函數(shù)將對(duì)所有員工按照薪資進(jìn)行排名,并通過 ORDER BY 子句進(jìn)行排序,結(jié)果將作為 rank_salary 列返回。
SELECT department_id, first_name, last_name, salary, ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) AS row_num FROM employees;
另一個(gè)示例查詢語句包含了 ROW_NUMBER 函數(shù),將在每個(gè)部門內(nèi)對(duì)員工按照薪資進(jìn)行排序,并返回他們的排名。
開窗函數(shù)遍歷整個(gè)查詢結(jié)果集,而不僅限于單個(gè)行,因此可以對(duì)查詢結(jié)果進(jìn)行更復(fù)雜的計(jì)算和聚合,從而使結(jié)果更有意義。