【问题标题】:Cumulative Counting in SQLSQL中的累积计数
【发布时间】:2020-10-08 01:32:25
【问题描述】:

我正在努力编写一个查询来获取列中值的累积不同计数。

table column:           desired column:
a                       1
b                       1
c                       1
c                       2
c                       3
a                       2
a                       3

解释:

row 1 的值为a,前面没有值为a 的行,因此我们计算a 一次并得到1

row 2 的值为b,前面没有值为b 的行,所以我们计算一次b 并得到1

row 3 的值为c,前面没有值为c 的行,因此我们将c 计数一次并得到1

row 4 的值为c,前面有1 行的值为c,所以我们将c 计数两次,得到2

row 5 的值为 c,前面有 2 行的值为 c,因此我们将 c 计数三次,得到 3

row 6 的值为 a,前面有 1 行的值为 a,所以我们将 a 计数两次,得到 2

row 7 的值为 a,前面有 2 行的值为 a,所以我们将 a 计数三次,得到 3

任何帮助都会很棒!

【问题讨论】:

    标签: sql distinct cumulative-frequency


    【解决方案1】:

    如果您的 SQL 版本支持它,那么ROW_NUMBER 是这里的一种选择:

    SELECT
        col,
        ROW_NUMBER() OVER (PARTITION BY col ORDER BY col) cn
    FROM yourTable;
    

    Demo

    请注意,上面在ROW_NUMBER 中使用的ORDER BY 子句是任意的,因为在列值的分区内,所有值都将具有相同的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-17
      • 2022-08-04
      • 2013-06-19
      • 2018-12-27
      相关资源
      最近更新 更多