postgresql – 窗口函数和更多“本地”聚合

postgresql – 窗口函数和更多“本地”聚合,第1张

概述假设我有这个表: 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 | 假设我有这个表:
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_vfrom (    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) t2order by min_v;

我遗漏了disTINCT.

总结

以上是内存溢出为你收集整理的postgresql – 窗口函数和更多“本地”聚合全部内容,希望文章能够帮你解决postgresql – 窗口函数和更多“本地”聚合所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1165121.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存