PostgreSQL lag,lead获取记录前后的数据
场景:获取当前行的下一行某一字段数据,获取当前行的上一行某一字段数据
1、测试数据:
postgres=# select * from tb1;
id | name
----+------
1 | aa
2 | aa
3 | aa
4 | aa
5 | aa
| bb
| cc
(7 rows)
2. lag(value any [, offset integer [, default any ]]):获取往前偏移offset的那行的某一字段的数据
|
参数值 |
说明 |
|
value any |
指定某一字段 |
|
offset integer |
向上的偏移量 |
|
default any |
如果前后的行不存在,则填充的默认值 |
- 获取上一行的id值,不指定默认值
postgres=# select *,lag(id,1) over(order by
id) from tb1;
id |
name | lead
----+------+------
1 |
aa | --第一行的上一行没有值,就用null填充
2 |
aa |
1
3 |
aa |
2
4 |
aa |
3
5 |
aa |
4
|
bb |
5
|
cc |
(7 rows)
- 获取上一行的id值,指定默认值
postgres=# select *,lag(id,1,100) over(order
by id) from tb1;
id |
name | lag
----+------+-----
1 |
aa | 100 --第一行的上一行没有值,就用指定的默认值100填充
2 |
aa |
1
3 |
aa |
2
4 |
aa |
3
5 |
aa |
4
|
bb |
5
|
cc |
(7 rows)
- 偏移两行
postgres=# select *,lag(id,2,100) over(order
by id) from tb1;
id |
name | lag
----+------+-----
1 |
aa | 100
2 |
aa | 100
3 |
aa |
1
4 |
aa |
2
5 |
aa |
3
|
bb |
4
|
cc |
5
(7 rows)
-偏移量为-1
postgres=# select *,lag(id,-1,100) over(order
by id) from tb1;
id |
name | lag
----+------+-----
1 |
aa |
2
2 |
aa |
3
3 |
aa |
4
4 |
aa |
5
5 |
aa |
|
bb |
|
cc | 100
(7 rows)
当偏移量为负数的时候,就是取下面行的指定字段的值了。
3. lead(value any
[, offset integer [, default any ]]):获取往后偏移offset的那行的某一字段的数据
- 向下偏移一行
postgres=# select *,lead(id,1,100) over(order
by id) from tb1;
id |
name | lead
----+------+------
1 |
aa |
2
2 |
aa | 3
3 |
aa |
4
4 |
aa |
5
5 |
aa |
|
bb |
|
cc |
100
(7 rows)
可以看到,lag(id, 1) 和 lead(id, -1)是一样的。
PostgreSQL lag,lead获取记录前后的数据的更多相关文章
- Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 原理and实现
Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 1. 应用场景 1 2. 随机抽取数据原理 1 3. 常用的实现方法:::数据库随机函数 1 4. Mssq ...
- python插入记录后获取最后一条数据的id
python插入记录后取得主键id的方法(cursor.lastrowid和conn.insert_id()) 参考:https://blog.csdn.net/qq_37788558/article ...
- 【记录】mybatis中获取常量类中数据
部分转载,已注明来源: 1.mybatis中获取常量类中数据 <update id="refuseDebt"> UPDATE dt_debt a SET ...
- thinkphp5 数据库查询之paginate: 同时获取记录总数和分页数据
thinkphp5中要想同时获得查询记录的总数量以及分页的数据, 可以用paginate(), 真的非常方便! 表结构: CREATE TABLE `t_users` ( `id` int(11) u ...
- django获取指定列的数据
django获取指定列的数据 model一般都是有多个属性的,但是很多时候我们又只需要查询特定的某一个,这个时候可以用到values和values_list [values()](https://do ...
- Extjs给gridPanel添加单价双击事件和获取当前行的数据
有两个小属性,如下 this.on('rowdblclick', this.readContent, this); this.on('cellclick', this.gridCellClick, t ...
- jmeter随笔(3)-从csv中获取带引号的数据详情
最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论. 1技巧1:从csv中获取带引号的数据详情 背景:我们从csv中获取数据,在jmeter中使用 ...
- ObjectStore onFetch方法获取记录总数
转自:http://blog.csdn.net/earthhour/article/details/38686029 ObjectStore onFetch方法获取记录总数 require(['doj ...
- jmeter csv中获取带引号的数据详情
最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论. 1技巧1:从csv中获取带引号的数据详情 背景:我们从csv中获取数据,在jmeter中使用 ...
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...
随机推荐
- 【离线数仓】Day01-用户行为数据采集:数仓概念、需求及架构、数据生成及采集、linux命令及其他组件常见知识
一.数据仓库概念 二.项目需求及架构设计 1.需求分析 2.项目框架 3.框架版本选型 服务器选型:云主机 服务器规划 三.数据生成模块 1.数据基本格式 公共字段:所有手机都包含 业务字段:埋点上报 ...
- webShell攻击及防御
最近公司项目也是经常被同行攻击,经过排查,基本定位都是挂马脚本导致,所以针对webShell攻击做一下记录. 首先简单说下 什么是webShell? 利用文件上传,上传了非法可以执行代码到服务器,然后 ...
- 聊聊CPU的发展历程之单核、多核、超线程
作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功.JAVA底层.面试.职业成长相关资料等更多精彩文章在公众号「小牛呼噜噜」 大家好,我是呼噜噜,在计算机的早期,In ...
- JavaScript:对象:如何复制一个对象?浅拷贝与深拷贝
回顾一下,我们对传参的讨论,对象的传参是引用传递,我们传递的是对象数据所在的内存地址: 那么无论我们怎么去赋值,所有变量指向的都是同一块内存: 如上图所示,无论我去使用哪个变量去操作对象的属性,改变的 ...
- 【Redis场景2】缓存更新策略(双写一致)
在业务初始阶段,流量很少的情况下,通过直接操作数据是可行的操作,但是随着业务量的增长,用户的访问量也随之增加,在该阶段自然需要使用一些手段(缓存)来减轻数据库的压力:所谓遇事不决,那就加一层. 在当前 ...
- 90%的Java开发人员都会犯的5个错误
前言 作为一名java开发程序员,不知道大家有没有遇到过一些匪夷所思的bug.这些错误通常需要您几个小时才能解决.当你找到它们的时候,你可能会默默地骂自己是个傻瓜.是的,这些可笑的bug基本上都是你忽 ...
- sqli-laba靶场搭建
windows下安装sqli-laba 环境:windows10 安装phpstudy 1.下载并安装小皮面板phpstudy(傻瓜式安装) https://www.xp.cn/windows-pan ...
- [python] 个人日常python工具代码
文章目录 生成文件目录结构 多图合并 找出文件夹中相似图像 生成文件目录结构 生成文件夹或文件的目录结构,并保存结果.可选是否滤除目录,特定文件以及可以设定最大查找文件结构深度.效果如下: root: ...
- CentOS7升级Linux内核
CentOS7升级Linux内核 什么是Linux内核 虽然时候使用 Linux 来表示整个操作系统,严格地说,Linux 只是个内核,而发行版的操作系统是一个完整功能的系统,它建立在内核之上,具有各 ...
- 详解kubernetes五种暴露服务的方式
部署完服务终将是为了访问,那么kubernetes中service和ingress都可以将集群内部的服务能够支持外部访问.service可以让一组 Pod(称为"后端")为集群内的 ...