高级sql技巧
以下是一些高级 SQL 技巧:
一、窗口函数
窗口函数可以在不影响数据分组的情况下,对数据进行排序、聚合等操作,非常强大。
- 排名函数 - ROW_NUMBER():为每一行分配一个唯一的连续整数序号。
- RANK():计算排序值,如果有相同的值会出现并列排名,并且下一个排名会跳过相应的数量。
- DENSE_RANK():计算排序值,有相同的值会出现并列排名,但下一个排名不会跳过。
 
例如:
SELECT employee_id, salary,ROW_NUMBER() OVER (ORDER BY salary DESC) AS row_num,RANK() OVER (ORDER BY salary DESC) AS rank_num,DENSE_RANK() OVER (ORDER BY salary DESC) AS dense_rank_num
FROM employees;
- 聚合函数作为窗口函数 - 可以使用 SUM()、AVG()、COUNT()等聚合函数在窗口中进行计算。
 
- 可以使用 
例如,计算每个员工的工资与部门平均工资的差值:
SELECT employee_id, department_id, salary,salary - AVG(salary) OVER (PARTITION BY department_id) AS salary_diff_from_dept_avg
FROM employees;
