首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用子日期获取前一天的自定义列中的计算

使用子日期获取前一天的自定义列中的计算
EN

Stack Overflow用户
提问于 2019-11-08 14:25:42
回答 1查看 44关注 0票数 1

我试图在mysql中使用subdate方法,但我无法得到我想要的.

假设我有下表:

表:

代码语言:javascript
复制
id    created_at    value
1     2019-03-19    50
2     2016-03-20    100
3     2016-03-21    87

我想要创建一个视图,它将显示3列,并添加一个自定义,这基本上是当前值与前一天值之间的差异。

在这个例子中,我的视图输出应该是:

代码语言:javascript
复制
id    created_at    value    diff
1     2019-03-19    50       0
2     2016-03-20    100      50
3     2016-03-21    87       -13

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-08 14:32:53

在MySQL 8.0中,您可以使用lag()

代码语言:javascript
复制
select 
    t.*,
    coalesce(value - lag(value) over(order by created at), 0) diff
from mytable t

在早期版本中,您可以自加入表并使用带有关联子查询的not exists条件来获取前一条记录:

代码语言:javascript
复制
select
    t.*,
    coalesce(t.value - t1.value, 0) diff
from mytable t
left join mytable t1 
    on t1.created_at < t.created_at
    and not exists(
        select 1
        from mytable t2
        where t2.created_at < t.created_at and t2.created_at > t1.created_at
    )
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58768414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档