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的路由方案,与原来的方案在使用上差别不 ...
随机推荐
- python 异步写入文件
# -*- coding:utf-8 -*-import asyncioimport aiofilesimport time#异步操作时,函数名前必须加上asyncasync def func1(): ...
- python中的字符串(1)
1.大小写的转换 upper()/lower() 转成大写.upper() 转成小写.lower() 返回的是字符串 2.是否是数字 isdigit() 返回的布尔值 3.去除字符串的空白字符 str ...
- CBV如何添加装饰器?
目录 一:CBV如何添加装饰器 1.CBV中django不建议直接给类的方法加装饰器 2.CBC添加装饰器的三种方法 3.CBV添加装饰器实战 一:CBV如何添加装饰器 1.CBV中django不建议 ...
- Linux基础 文件和目录
文件和目录 前言 本章讨论文件属性和文件系统内容.除了上一章讨论的普通文件,Linux的文件概念还包括:目录.设备等.在Linux系统中,文件的种类包括:普通文件.目录.符号链接.块设备.字符设备.管 ...
- Python实验报告(第10章)
实验10:文件及目录操作 一.实验目的和要求 1.掌握基本文件操作(创建.打开.关闭.写入): 2.掌握目录操作的基本操作(创建.删除.遍历): 3.了解高级文件操作(删除文件.获取文件基本信息). ...
- 数值计算:前向和反向自动微分(Python实现)
1 自动微分 我们在<数值分析>课程中已经学过许多经典的数值微分方法.许多经典的数值微分算法非常快,因为它们只需要计算差商.然而,他们的主要缺点在于他们是数值的,这意味着有限的算术精度和不 ...
- 【转载】github.com访问慢解决办法
打开网站 IPAddress.com ,找到页面中下方的"IP Address Tools – Quick Links" 分别输入github.global.ssl.fastly. ...
- [OpenCV实战]20 使用OpenCV实现基于增强相关系数最大化的图像对齐
目录 1 背景 1.1 彩色摄影的一个简短而不完整的历史 1.2 OpenCV中的运动模型 2 使用增强相关系数最大化(ECC)的图像对齐 2.1 findTransformECC在OpenCV中的示 ...
- [随笔所想] CSDN认证博客专家申请通过随笔所想
本篇博客写于2020年5月13日晚,为了纪念CSDN博客专家申请通过. 2020年5月10日晚,也就是2020年的母亲节当晚提交了博客专家申请.在2020年5月13日上午,就知道博客专家申请通过啦!前 ...
- 在腾讯云上创建一个玩具docker-mysql数据服务
有时候开发需求会自己做一下测试数据,在自己电脑本地安装的服务多了电脑环境会搞的很乱,这时使用云服务器安装个docker服务是一个不错的寻找. 下面步骤是在腾讯云上安装docker-mysql镜像,并导 ...