【发布时间】:2018-06-29 04:43:08
【问题描述】:
今天我试着玩了一下货币,给了 PostgreSQL 一个帮助我的机会。
我在 PostgreSQL 数据库中有一个表,其中包含三个字段:
CREATE TABLE IF NOT EXISTS binance (
date TIMESTAMP,
symbol VARCHAR(20),
price REAL
)
此表从 10 秒更新到 10 秒,大约 250 行。间隔之间的符号总是相同的。例如数据:
+----------------------------+--------+-------+
| date | symbol | price |
+----------------------------+--------+-------+
| 2018-01-18 00:00:00.000000 | x | 12 |
| 2018-01-18 00:00:00.000120 | y | 15 |
| 2018-01-18 00:00:00.000200 | z | 19 |
| 2018-01-18 00:00:10.080000 | x | 14 |
| 2018-01-18 00:00:10.123000 | y | 16 |
| 2018-01-18 00:00:10.130000 | z | 20 |
+----------------------------+--------+-------+
现在,我想做的是获取每个符号在过去 5 分钟内增长了多少(百分比)。
我们以符号为例(ETHBTC)。该品种在过去 5 分钟内的数据如下所示:
+----------------------------+--------+----------+
| date | symbol | price |
+----------------------------+--------+----------+
| 2018-01-19 22:59:10.000000 | ETHBTC | 0.09082 |
| 2018-01-19 22:58:59.000000 | ETHBTC | 0.0907 |
| 2018-01-19 22:58:47.000000 | ETHBTC | 0.090693 |
| 2018-01-19 22:58:35.000000 | ETHBTC | 0.090697 |
| 2018-01-19 22:58:24.000000 | ETHBTC | 0.090712 |
| 2018-01-19 22:58:11.000000 | ETHBTC | 0.090682 |
| 2018-01-19 22:57:59.000000 | ETHBTC | 0.090774 |
| 2018-01-19 22:57:48.000000 | ETHBTC | 0.090672 |
| 2018-01-19 22:57:35.000000 | ETHBTC | 0.09075 |
| 2018-01-19 22:57:24.000000 | ETHBTC | 0.090727 |
| 2018-01-19 22:57:12.000000 | ETHBTC | 0.090705 |
| 2018-01-19 22:57:00.000000 | ETHBTC | 0.090707 |
| 2018-01-19 22:56:49.000000 | ETHBTC | 0.090646 |
| 2018-01-19 22:56:37.000000 | ETHBTC | 0.090645 |
| 2018-01-19 22:56:25.000000 | ETHBTC | 0.090636 |
| 2018-01-19 22:56:13.000000 | ETHBTC | 0.090696 |
| 2018-01-19 22:56:00.000000 | ETHBTC | 0.090698 |
| 2018-01-19 22:55:48.000000 | ETHBTC | 0.090693 |
| 2018-01-19 22:55:37.000000 | ETHBTC | 0.090698 |
| 2018-01-19 22:55:25.000000 | ETHBTC | 0.090601 |
| 2018-01-19 22:55:13.000000 | ETHBTC | 0.090644 |
| 2018-01-19 22:55:01.000000 | ETHBTC | 0.0906 |
| 2018-01-19 22:54:49.000000 | ETHBTC | 0.0906 |
| 2018-01-19 22:54:37.000000 | ETHBTC | 0.09062 |
| 2018-01-19 22:54:25.000000 | ETHBTC | 0.090693 |
+----------------------------+--------+----------+
要选择此数据,我使用以下查询:
SELECT *
FROM binance
WHERE date >= NOW() AT TIME ZONE 'EET' - INTERVAL '5 minutes'
AND symbol = 'ETHBTC'
ORDER BY date DESC;
我想做的是找出每个符号:
- 最后一个值与 10 秒前的值之间的百分比
- 最后一个值与 1 分钟前的值之间的百分比
- 最后一个值与 5 分钟前的值之间的百分比
现在,我有点不知道这样的查询应该是什么样子。此外,IDK 是否重要,但查询是在 Python 中运行的,所以我可能无法利用完整的 PostgreSQL 功能。
【问题讨论】:
标签: sql database postgresql percentage