首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用postgreSQL创建股票图表

使用postgreSQL创建股票图表
EN

Stack Overflow用户
提问于 2019-03-02 03:31:15
回答 1查看 54关注 0票数 0

我正在尝试使用postgreSQL制作一个股票图表,如下所示。

我的数据应该是这样的:

代码语言:javascript
复制
stock_data    
stock_price   trade_datetime
5.1         | 1/1/2000 1:00 PM
6.2         | 1/1/2000 2:00 PM
5.0         | 1/2/2000 1:00 PM
3.4         | 1/2/2000 2:00 PM
4.8         | 1/2/2000 3:00 PM
7.0         | 1/3/2000 2:30 PM
5.9         | 1/3/2000 5:55 PM

期望的结果

代码语言:javascript
复制
MIN | MAX | AVG | close | date
5.1 | 6.2 | 5.65| 6.2   | 1/1/2000
3.4 | 5.0 | 4.4 | 4.8   | 1/2/2000
5.9 | 7.0 | 6.45| 5.9   | 1/3/2000

我在想,我可能需要使用窗口函数,但我似乎就是不能正确使用这个函数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-02 03:57:50

为此,您可以使用预期的聚合函数,然后连接到使用LAST_VALUE窗口函数的派生表:

代码语言:javascript
复制
SELECT
    MIN(stock_price) AS "MIN"
    , MAX(stock_price) AS "MAX"
    , AVG(stock_price) AS "AVG"
    , MAX(closing.closing_price) AS "close"
    , trade_datetime::date AS "date"
FROM
    stock_data
    INNER JOIN LATERAL (
      SELECT
        LAST_VALUE(stock_price) OVER (PARTITION BY trade_datetime::date) AS closing_price
      FROM
        stock_data AS closing_data
      WHERE closing_data.trade_datetime::date = stock_data.trade_datetime::date
    ) AS closing ON true
GROUP BY
    trade_datetime::date
ORDER BY
    trade_datetime::date ASC

收益率:

代码语言:javascript
复制
| MIN | MAX | AVG                | close | date                     |
| --- | --- | ------------------ | ----- | ------------------------ |
| 5.1 | 6.2 | 5.6500000000000000 | 6.2   | 2000-01-01T00:00:00.000Z |
| 3.4 | 5.0 | 4.4000000000000000 | 4.8   | 2000-01-02T00:00:00.000Z |
| 5.9 | 7.0 | 6.4500000000000000 | 5.9   | 2000-01-03T00:00:00.000Z |

DB Fiddle

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54951175

复制
相关文章

相似问题

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