SQL 按条件拆分组
Posted
技术标签:
【中文标题】SQL 按条件拆分组【英文标题】:SQL break groups by a condition 【发布时间】:2020-10-12 10:25:28 【问题描述】:假设我有这张桌子:
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
【问题讨论】:
【参考方案1】:您可以使用聚合。我们如何定义组?在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
【讨论】:
以上是关于SQL 按条件拆分组的主要内容,如果未能解决你的问题,请参考以下文章