Mysql 如何使用sQlite获取每个组的最大值,直到它返回到零
下表中有日期和价格字段。Mysql 如何使用sQlite获取每个组的最大值,直到它返回到零,mysql,sql,sqlite,Mysql,Sql,Sqlite,下表中有日期和价格字段。 价格从零开始,并可能随时间增加。 我想按该期间记录的最高价格分组,直到该值返回到零 +----------------+------------+ | price | date | +----------------+------------+ | 6 | 2016-12-18 | | 5 | 2016-12-17 | | 4 | 2016-12-16 | |
价格从零开始,并可能随时间增加。
我想按该期间记录的最高价格分组,直到该值返回到零
+----------------+------------+
| price | date |
+----------------+------------+
| 6 | 2016-12-18 |
| 5 | 2016-12-17 |
| 4 | 2016-12-16 |
| 3 | 2016-12-15 |
| 2 | 2016-12-14 |
| 1 | 2016-12-13 |
| 0 | 2016-12-12 |
| 1 | 2016-12-11 |
| 0 | 2016-12-10 |
| 0 | 2016-12-09 |
| 5 | 2016-12-08 |
| 4 | 2016-12-07 |
| 3 | 2016-12-06 |
| 2 | 2016-12-05 |
| 1 | 2016-12-04 |
| 0 | 2016-12-03 |
| 1 | 2016-12-02 |
| 0 | 2016-12-01 |
| 2 | 2016-11-30 |
| 1 | 2016-11-29 |
+----------------+------------+
期望输出:
+----------------+------------+
| price | date |
+----------------+------------+
| 6 | 2016-12-18 |
| 1 | 2016-12-11 |
| 5 | 2016-12-08 |
| 1 | 2016-12-02 |
| 2 | 2016-11-30 |
+----------------+------------+
使用sQlite如何实现这一点
select max(price) as price
,max(date) as date
from (select t1.price,t1.date,count(t2.date) as group_id
from t t1
left join t t2
on t2.date <= t1.date
and t2.price = 0
group by t1.price,t1.date
) t
group by group_id
having max(price) <> 0
order by date desc
+-------+------------+
| price | date |
+-------+------------+
| 6 | 2016-12-18 |
+-------+------------+
| 1 | 2016-12-11 |
+-------+------------+
| 5 | 2016-12-08 |
+-------+------------+
| 1 | 2016-12-02 |
+-------+------------+
| 2 | 2016-11-30 |
+-------+------------+