PostgreSQL – 选择重复连续序列的计数
发布时间:2020-12-13 15:55:07 所属栏目:百科 来源:网络整理
导读:我有以下表/数据: | user_id | action_id | data |------------------------------------- | 10 | 1 | fly || 10 | 2 | train || 10 | 3 | fly || 10 | 4 | fly || 10 | 5 | fly || 10 | 6 | train || 10 | 7 | fly || 10 | 8 | train || 10 | 9 | fly || 1
我有以下表/数据:
| user_id | action_id | data | ------------------------------------- | 10 | 1 | fly | | 10 | 2 | train | | 10 | 3 | fly | | 10 | 4 | fly | | 10 | 5 | fly | | 10 | 6 | train | | 10 | 7 | fly | | 10 | 8 | train | | 10 | 9 | fly | | 10 | 10 | fly | 在postgresql中有没有办法计算重复的连续“飞行”事件?在此示例中,结果应为: counts ------ 1 3 1 2 解决方法
是的,可以使用滞后窗函数和累积和:
with FlagCTE as ( select t.action_id,t.data,case when t.data = 'fly' and t.data = lag(t.data) over (order by t.action_id) then 0 else 1 end as Flag from some_table t),GroupCTE as ( select t.action_id,sum(t.Flag) over (order by t.action_id) as GroupId from FlagCTE t where t.data = 'fly') select count(*) as counts from GroupCTE t group by t.GroupId order by t.GroupId SQLFiddle Demo (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- ruby-on-rails – 显示复选框best_in_place ruby
- Swift - 使用NSURL进行数据的提交和获取(POST与
- 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系
- Peter Bell谈NoSQL的发展趋势
- Objective-C:typedef是一个块,在方法声明中使用
- ruby-on-rails – 库存管理:如何处理数据库中已
- react-router笔记1:最简单的路由使用
- c – MS Visual Studio Project头文件
- iphone – UIPageControl setCurrentPage – UIC
- 【IOS中XML解析】NSXMLParser方法解析XML文件案例
热点阅读