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

posted @ 2024-01-25 10:56  野菊花  阅读(219)  评论(0编辑  收藏  举报