【发布时间】:2015-01-20 22:51:20
【问题描述】:
如果下一行为空,我有没有办法获得前一个值? 我的数据库是这样的
| tstamp | val1 | val2 |
| 2015-01-21 01:00:00 | 15.2 | 25.1 |
| 2015-01-21 01:30:00 | null | null |
| 2015-01-21 02:00:00 | null | 14.1 |
| 2015-01-21 02:30:00 | 11.2 | null |
| 2015-01-21 03:00:00 | null | 21.1 |
| 2015-01-21 03:30:00 | 12.2 | 13.1 |
目前我唯一的查询是只获取最后一行,即 12.2 和 13.1
SELECT tstamp, val1, val2
FROM table
WHERE id IN (1,2) AND
tstamp BETWEEN "2015-01-21 00:00:00" AND "2015-01-21 23:00:00"
GROUP BY DATE(tstamp), HOUR(tstamp), MINUTE(tstamp) DIV 30
ORDER BY tstamp DESC
LIMIT 1
我想要的输出是
如果我使用它,我得到的结果是
| tstamp | val1 | val2 |
| 2015-01-21 01:00:00 | 15.2 | 25.1 |
| 2015-01-21 01:30:00 | 15.2 | 25.1 |
| 2015-01-21 02:00:00 | 15.2 | 14.1 |
| 2015-01-21 02:30:00 | 11.2 | 14.1 |
| 2015-01-21 03:00:00 | 11.2 | 21.1 |
| 2015-01-21 03:30:00 | 12.2 | 13.1 |
有什么办法可以让它工作吗?
谢谢。
【问题讨论】:
-
是的,就像 1:30 和 2:00 我想从 1:00 = 15.2 获取最后一个值,然后对于下一个空值 3:00 我想从 2 获取值:30 即 11.2
-
对于 val2 列也是如此,1:30 的值应该是 1:00 的值,然后 2:30 的值应该是 2:00 的值
-
val1 是 MIN 列,val2 是 MAX
-
喜欢股市的低点和高点?
-
所以你最终可能会得到一个实际上高于它的“高”的“低”?!?!?
标签: mysql