首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算两天的差价

问计算两天的差价
EN

Stack Overflow用户
提问于 2019-05-02 16:23:52
回答 1查看 63关注 0票数 0

我有一个名为Stores的表:

代码语言:javascript
复制
Date        |  Store  |  Price
2018-05-02  |  ABC    |  0.91
2018-05-02  |  DEF    |  0.81
2018-05-03  |  ABC    |  0.92
2018-05-03  |  DEF    |  0.83
2018-05-05  |  ABC    |  0.91
2018-05-05  |  DEF    |  0.85

我正在尝试编写一个查询,对于给定的商店,将输出价格,前一天的价格,以及两天之间的价格差异和价格收益(这是一个百分比)。输出应如下所示:

代码语言:javascript
复制
 Date        |  Store  |  Price  |  PrevPrice  |  Change  |  Gain
 2018-05-03  |  ABC    |  0.92   |  0.91       |  0.01    |  1.086956522
 2018-05-05  |  ABC    |  0.91   |  0.92       |  -0.01   |  -1.098901099
 2018-05-03  |  DEF    |  0.83   |  0.81       |  0.02    |  2.409638554
 2018-05-05  |  DEF    |  0.85   |  0.83       |  0.02    |  2.352941176

第一个日期不应该在输出中,因为它没有之前的日期。我有以下查询,它使用lag()获取PrevPrice:

代码语言:javascript
复制
select * 
from (
    select "Date", store, price, lag(price) over (partition by code order by "Date") as PrevPrice from Stores
) s where PrevPrice is not null;

我不知道如何计算两天之间的差价或价格收益。更具体地说,我不知道我可以用什么方法来计算差价。任何真知灼见,我们都很感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-02 16:36:52

就快到了。只需从价格中减去lag(价格):

代码语言:javascript
复制
SELECT Date, Store, Price, PrevPrice, Price - PrevPrice AS Change, (Price - PrevPrice) / PrevPrice * 100 AS Gain
FROM (
    SELECT Date, Store, Price, LAG(Price) OVER (PARTITION BY Store ORDER BY Date) AS PrevPrice
    FROM t
) AS x
WHERE PrevPrice IS NOT NULL
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55948357

复制
相关文章

相似问题

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