gpt4 book ai didi

值更改时的 SQL Select 计数器

转载 作者:行者123 更新时间:2023-12-02 08:15:19 25 4
gpt4 key购买 nike

每次值随时间变化时,我都需要创建一个计数器。我有这张 table :

  Date      |   Quantity
2017-02-01 | 10000
2017-02-02 | 20000
2017-02-03 | 20000
2017-02-04 | 20000
2017-02-05 | 10000
2017-02-06 | 10000

我想做这样的事情:

  Date      |   Quantity   | Counter
2017-02-01 | 10000 | 1
2017-02-02 | 20000 | 2
2017-02-03 | 20000 | 2
2017-02-04 | 20000 | 2
2017-02-05 | 10000 | 3
2017-02-06 | 10000 | 3

我尝试使用 dense_rank 和其他函数,但我不能让它看起来像那样,因为当数量为 10000 时它会给出相同的计数器编号。

我问的是可能的吗?

谢谢!

最佳答案

一个简单的方法是使用lag() 和一个累积和:

select t.date, t.quantity,
sum(case when quantity = prev_quantity then 0 else 1 end) over (order by date) as counter
from (select t.*, lag(quantity) over (order by date) as prev_quantity
from t
) t;

这些是 ANSI 标准函数,在大多数数据库中都可用。

关于值更改时的 SQL Select 计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42489885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com