以下是提升 SQL 技能的 20 个高级技巧,涵盖复杂查询优化、性能调优和高效数据处理,适用于实际开发场景:
一、窗口函数(Window Functions)
核心用途:对数据子集进行聚合计算,保留原始行信息。
-- 计算每个部门的薪资排名
SELECT
employee_id,
department_id,
salary,
ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rank
FROM employees;
常用函数:
ROW_NUMBER()
,RANK()
,DENSE_RANK()
LEAD()
,LAG()
(访问相邻行数据)SUM()/AVG() OVER()
(动态聚合)
二、公共表表达式(CTE)
优势:提升复杂查询的可读性,支持递归查询。
-- 递归查询组织架构树
WITH RECURSIVE org_tree AS (
SELECT id, name, parent_id, 1 AS level
FROM departments
WHERE parent_id IS NULL
UNION ALL
SELECT d.id, d.name, d.parent_id, ot.level + 1
FROM departments d
INNER JOIN org_tree ot