postgresql – 窗口函数和更多“本地”聚合
发布时间:2020-12-13 16:15:29 所属栏目:百科 来源:网络整理
导读:假设我有这个表: select * from window_test; k | v---+--- a | 1 a | 2 b | 3 a | 4 最终我想得到: k | min_v | max_v---+-------+------- a | 1 | 2 b | 3 | 3 a | 4 | 4 但我会很高兴得到这个(因为我可以轻松地过滤掉它): k | min_v | max_v---+------
假设我有这个表:
select * from window_test; k | v ---+--- a | 1 a | 2 b | 3 a | 4 最终我想得到: k | min_v | max_v ---+-------+------- a | 1 | 2 b | 3 | 3 a | 4 | 4 但我会很高兴得到这个(因为我可以轻松地过滤掉它): k | min_v | max_v ---+-------+------- a | 1 | 2 a | 1 | 2 b | 3 | 3 a | 4 | 4 使用PostgreSQL 9.1窗口函数可以实现这一点吗?我试图理解我是否可以使用单独的分区来表示此样本中第一次和最后一次出现的k = a(按v排序).
这将返回包含样本数据的所需结果.不确定它是否适用于真实世界的数据:
select k,min(v) over (partition by group_nr) as min_v,max(v) over (partition by group_nr) as max_v from ( select *,sum(group_flag) over (order by v,k) as group_nr from ( select *,case when lag(k) over (order by v) = k then null else 1 end as group_flag from window_test ) t1 ) t2 order by min_v; 我遗漏了DISTINCT. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |