當使用 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
的基本用法。根據你的具體需求,可以應用不同的窗口函數和排序規則。