问题描述
假设我有这张桌子:
timestamp | is_break | data
----------+----------+------
0 | 1 | 10
1 | 0 | 20
2 | 1 | 5
3 | 1 | 10
4 | 0 | 20
5 | 0 | 30
如何通过is_break列将数据分成几组?
例如,按组获取数据的AVG,例如:
min_timestamp | avg_data
--------------+---------
0 | 15
2 | 5
3 | 20
解决方法
您可以使用聚合。我们如何定义组?在is_break
列上加上一个窗口总和:
select min(timestamp),avg(date) avg_date
from (
select t.*,sum(is_break) over(order by timestamp) grp
from mytable t
)
group by grp