【问题标题】:SQL Calculate the rate of growth of the indicator over timeSQL 计算指标随时间的增长率
【发布时间】:2021-08-08 11:07:54
【问题描述】:

我有一个这样的 postgres 表:

dates
date
name
text
values
real
2017-05-01 A 1
2017-05-02 A 3
2017-05-02 B 10
2017-05-03 A 6
2017-05-04 A 12
2017-05-03 B 10
2017-05-04 B 10
2017-05-05 B 11

如何用SQL计算指标随时间的增长率,得到下表

dates
date
name
text
values
real
growth
real
2017-05-01 A 1 NULL
2017-05-02 A 3 2
2017-05-02 B 10 NULL
2017-05-03 A 6 3
2017-05-04 A 12 6
2017-05-03 B 10 0
2017-05-04 B 10 0
2017-05-05 B 11 1

A 的示例:

2017-05-01 (1)
2017-05-02 (3)
2017-05-03 (6)
2017-05-04 (12)
我正在计算相邻日期之间的度量差异并得到了关注
2017-05-01 (空)
2017-05-02 (3-1 =2)
2017-05-03 (6-3 = 3)
2017-05-04 (12-6=6)

【问题讨论】:

  • 请解释你的输出。如何计算?
  • @AkhileshMishra,我将使用 A:2017-05-01 A 1 2017-05-01 (1) 2017-05-02 (3) 2017-05-03 (6) 2017- 05-04 (12) 我正在计算相邻日期之间的度量差异并得到以下结果 2017-05-01 (NULL) 2017-05-02 (2) 2017-05-03 (3) 2017-05-04 ( 6)
  • 请通过编辑在问题中写下解释。
  • 添加了答案。

标签: sql postgresql window-functions


【解决方案1】:

如果您的表格没有间隔,您可以在此处使用LAG() 窗口函数:

试试这个:

select 
*, 
values-(lag(values) over(partition by name order by dates)) "growth" 
from test

DEMO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多