这是一篇个人学习笔记,仅供参考。
窗口函数(window function),或开窗函数,主要有以下几个:
row_number():无重复排序
rank():并列跳排,数字不连续
desc_rank():并列不跳排,数字连续
first_value():取回第一行的值
last_value():取回最后一行的值
nth_value():取回第N行的值

一般的聚合函数(aggregate function)如sum、avg等加上over()关键字也可以转化为窗口函数,不是本文重点。本文主要讲以last_value()为代表的后三个函数。
由于本人在实际使用中发现last_value()函数没有正确返回想要的结果,故上网查询,记录如下。

官网文档提到:
Note that first_value, last_value, and nth_value consider only the rows within the “window frame”, which by default contains the rows from the start of the partition through the last peer of the current row. This is likely to give unhelpful results for last_value and sometimes also nth_value. You can redefine the frame by adding a suitable frame specification (RANGE, ROWS or GROUPS) to the OVER clause. See Section 4.2.8 for more information about frame specifications.
明确指出不正确的使用可能导致last_value和nth_value返回与预期不符的结果。需要在over从句中加上{ RANGE | ROWS | GROUPS } BETWEEN frame_start AND frame_end [ frame_exclusion ]

举例:查找每个班级的最低分
select class, name, score, last_value(score) over(partition by class order by score RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
from test_table
想知道更详细的使用说明,请参考如下两个官方文档。

参考:

  1. https://www.postgresql.org/docs/14/functions-window.html#FUNCTIONS-WINDOW-TABLE
  2. https://www.postgresql.org/docs/14/sql-expressions.html#SYNTAX-WINDOW-FUNCTIONS

PostgresQL窗口函数 last_value未返回预期结果原因排查相关推荐

  1. 死链提交为什么不能提交 html文件,百度提交网站后死链一直未处理掉的原因有哪些?...

    上次成都SEO的网站出现死链接之后,按照处理方式处理后,但是还是没有处理掉,柴叔分析了一下其主要原因有以下几点:百度提交网站死链一直未处理掉的原因有哪些?分享给各位希望后面用得上: 1.站点质量因素: ...

  2. FTPClient.storeFile返回false的原因

    FTPClient.storeFile()返回false的原因 Debug搞了一晚上,什么都看过了,最后总算是自己茅塞顿开发现了问题. FTPClient会返回false的原因有很多, 首先有编码错误 ...

  3. ssm read time out的原因_加盟蜜雪冰城未通过是什么原因?总部公布了两点原因

    蜜雪冰城2020年门店数量突破了10000家,为此也举行了万店同庆的活动,蜜雪冰城下沉市场以3元的冰淇淋和4元的柠檬水赢得消费者口碑.所以,很多人都想要和这样的奶茶品牌进行合作,然而很多人的申请却被驳 ...

  4. JavaScript中的ParseInt(08)和“09”返回0的原因分析及解决办法

    今天在程序中出现一个bugger ,调试了好久,最后才发现,原来是这个问题. 做了一个实验: alert(parseInt("01")),当这个里面的值为01====>07时 ...

  5. 海底捞:今年年底前将关停约300家经营未达预期门店

    11月6日消息,日前,海底捞对外发布公告称,将于2021年12月31日前逐步关停300家左右经营未达预期门店,其中部分门店将暂时休整.择机重开,休整周期最长不超过两年. 此次关停门店不裁员,将妥善安置 ...

  6. RegOpenKeyEx返回 2及原因

    同样是今天,在使用这个函数RegOpenKeyEx的时候,老是执行不成功,函数本身返回2,GetLastError返回0.在CSDN上查阅资料说是返回2的原因是注册表中对应路径不存在,可是我电脑中注册 ...

  7. 每日新闻:今日头条正式发布小程序;甲骨文云服务营收未达预期

    点击关注中国软件网 最新鲜的企业级干货聚集地 洞察 2018中国软件生态大会 西安站就要与您见面啦! 点击文末[阅读原文]了解更多喔 趋势洞察 薛澜:第四次工业革命将为缩小贫富差距提供机会 清华大学教 ...

  8. .next_sibling .previous_sibling 查找不到节点返回空白的原因

    .next_sibling .previous_sibling 查找不到节点返回空白的原因: 因为空白或者换行也可以被视作一个节点,所以得到的结果可能是空白或者换行!!!切记!!! 解决办法: 可以多 ...

  9. Java process.waitfor 返回1的原因

    Java的Process,在执行命令时,出现waitfor返回1错误.根据java文档,是operation not permited.但绝大多数情况下,这是瞎扯. 真正原因是,你执行的命令(dos或 ...

最新文章

  1. 2013校作息时间表暂存
  2. 谷歌浏览器之如何调试页面js
  3. IIS 7.5绑定中文域名转码启动站点报“值不在预期的范围内”
  4. php session redis db,php session redis 配置
  5. 安装配置gitlab
  6. 如何修改bt tracker服务器,bt tracker服务器
  7. 语音识别概念午后大跌 语音识别概念股一览表
  8. android 发送按键 0,android monitor tool (8.0 模拟发送按键及触摸屏事件实现)
  9. matlab编写算法,Matlab 入门宝典 编程算法大全
  10. 嘻游记 QVOD快播高清电影在线播放下载
  11. spring框架对jdk版本要求
  12. 低代码学习教程:如何编辑自定义打印模版?
  13. 掌握NestJS - JavaScript Node.js 框架
  14. oracle 考试结果哪里查,oracle认证考试成绩查询的方法是怎样的?
  15. Android 使用PLDroidPlayer播放网络视频 依据视频角度自己主动旋转
  16. 【论文】针对图片过大问题,在不降低图片dpi的情况下缩小图片大小
  17. simulink/stateflow 纯电动+4档变速箱动力性经济性仿真模型 包含vcu控制及换档控制模型,可实现最高车速 最大爬坡度 加速时间,能耗续航仿真
  18. iveiw:Switch开关用法
  19. 采集天猫网的10个经典方法
  20. [288]关于MySQL的1064错误

热门文章

  1. 苹果不显示订阅服务器,苹果xr找不到订阅管理?苹果xr找不到订阅管理解决办法...
  2. 【老九学堂】【初识C语言】常用字符串函数
  3. firebox插件使用笔记
  4. 递归算法时间复杂度和空间复杂度分析与举例
  5. Android图像处理之Paint
  6. 通过构建Paint App学习React Hooks
  7. 端到端训练 联合训练_中巴空军“雄鹰-Ⅷ”联合训练:首次实现全过程体系对抗...
  8. Typora导出Word
  9. 如何查找域名对应IP地址?
  10. 一个基于 Vue3 Vite 的相册应用