当使用 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
的基本用法。根据你的具体需求,可以应用不同的窗口函数和排序规则。