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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章