我有以下数据表:
表名 entity_values| 日期时间 | 值 |
|---|---|
| 2017-09-02 05:05:00 | 20 |
| 2017-09-02 05:10:00 | 20 |
| 2017-09-02 05:15:00 | 21 |
| 2017-09-02 05:20:00 | 21 |
| 2017-09-02 05:25:00 | 21 |
| 2017-09-02 05:30:00 | 22 |
我目前只想看到变化,所以我构建了以下查询:
SELECT date_time AS 'time', value - LAG(value) over (order by date_time) as 'Kwh01-Energy (kWh)' FROM entity_values;
这将返回以下结果:
| 日期时间 | 值 |
|---|---|
| 2017-09-02 05:00:00 | 0 |
| 2017-09-02 05:05:00 | 0 |
| 2017-09-02 05:10:00 | 1 |
| 2017-09-02 05:15:00 | 0 |
| 2017-09-02 05:20:00 | 0 |
| 2017-09-02 05:25:00 | 1 |
由于窗口函数不允许在WHERE子句中使用,如:
SELECT date_time AS 'time', value - LAG(value) over (order by date_time) as 'Kwh01-Energy (kWh)' FROM entity_values WHERE (value - LAG(value) over (order by date_time)) > 0;
错误代码:3593。您不能在此上下文中使用窗口函数“lag”。
问题:如何过滤掉0值,只获取“变化”的值? 期望的结果:
| 日期时间 | 值 |
|---|---|
| 2017-09-02 05:10:00 | 1 |
| 2017-09-02 05:25:00 | 1 |
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
感谢 @Andrew