【sqlsever】具体案例理解PARTITION BY

当使用 PARTITION BY 时,它通常是与窗口函数一同使用的。下面将提供一个简单的例子,使用一个包含以下列的表:

+---------+---------+---------+
| column1 | column2 | column3 |
+---------+---------+---------+
| A | 1 | 10 |
| A | 2 | 20 |
| B | 1 | 30 |
| B | 2 | 40 |
| B | 3 | 50 |
+---------+---------+---------+

现在,我们想要计算每个 column1 的每一行的 column3 列的累积总和。我们可以使用 PARTITION BY 来实现这个目标:

SELECT
 column1,
 column2,
 column3,
 SUM(column3) OVER (PARTITION BY column1 ORDER BY column2) AS RunningTotal
FROM
 your_table;

这将生成以下结果:

+---------+---------+---------+--------------+
| column1 | column2 | column3 | RunningTotal |
+---------+---------+---------+--------------+
| A | 1 | 10 | 10 |
| A | 2 | 20 | 30 |
| B | 1 | 30 | 30 |
| B | 2 | 40 | 70 |
| B | 3 | 50 | 120 |
+---------+---------+---------+--------------+

在这个例子中,PARTITION BY column1 将结果集分为两个分区,即按照 column1 的值划分。然后,SUM(column3) OVER (PARTITION BY column1 ORDER BY column2) 计算每个分区内 column3 列的累积总和,并按照 column2 列的顺序进行排序。

这是一个简单的例子,以帮助理解 PARTITION BY 的基本用法。根据你的具体需求,可以应用不同的窗口函数和排序规则。

作者:野菊花原文地址:https://www.cnblogs.com/Jackyye/p/17986710

%s 个评论

要回复文章请先登录注册