partition by用法面试题
时间: 2025-02-13 14:20:26 浏览: 10
SQL PARTITION BY
子句详解
定义与作用
PARTITION BY
是 SQL 中用于窗口函数的一个重要子句,它允许查询中的数据被划分为多个逻辑分区。每个分区可以独立处理,这使得复杂的数据分析变得更加直观和高效[^1]。
语法结构
一般情况下,PARTITION BY
被嵌入到 OVER()
函数内使用,其基本形式如下:
<window_function>() OVER (
PARTITION BY column_name(s)
ORDER BY column_name(s)
[ROWS|RANGE BETWEEN ... AND ...]
);
这里 <window_function>
可以是任何支持窗口操作的聚合或排名函数,比如 SUM()
, AVG()
, ROW_NUMBER()
等等[^4]。
实际应用案例
考虑一个员工薪资表的例子来展示如何利用 PARTITION BY
进行数据分析:
假设有一个名为 TMP_Person
的表格存储着个人基本信息及其薪水记录。现在想要获取每个人在其所在省份内的累计工资总额,则可以通过以下 SQL 查询实现这一需求:
SELECT
PName,
PProvince,
PCity,
PAge,
PSalary,
sum(PSalary) OVER(
PARTITION BY PProvince -- 按照省份划分成不同组别
ORDER BY PSalary -- 对每省内部人员按薪资产生顺序排列
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW -- 计算至当前为止的所有前缀项之和
) AS Cumulative_Salary_By_Province
FROM TMP_Person;
此命令会返回每位成员的名字、城市以及他们各自所属省份里累积起来直到该人的总薪酬数额[^2].
面试常见问题解析
相关推荐














