场景:获取当前行的下一行某一字段数据,获取当前行的上一行某一字段数据

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获取记录前后的数据的更多相关文章

  1. Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 原理and实现

    Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 1. 应用场景 1 2. 随机抽取数据原理 1 3. 常用的实现方法:::数据库随机函数 1 4. Mssq ...

  2. python插入记录后获取最后一条数据的id

    python插入记录后取得主键id的方法(cursor.lastrowid和conn.insert_id()) 参考:https://blog.csdn.net/qq_37788558/article ...

  3. 【记录】mybatis中获取常量类中数据

    部分转载,已注明来源: 1.mybatis中获取常量类中数据 <update id="refuseDebt"> UPDATE dt_debt a SET         ...

  4. thinkphp5 数据库查询之paginate: 同时获取记录总数和分页数据

    thinkphp5中要想同时获得查询记录的总数量以及分页的数据, 可以用paginate(), 真的非常方便! 表结构: CREATE TABLE `t_users` ( `id` int(11) u ...

  5. django获取指定列的数据

    django获取指定列的数据 model一般都是有多个属性的,但是很多时候我们又只需要查询特定的某一个,这个时候可以用到values和values_list [values()](https://do ...

  6. Extjs给gridPanel添加单价双击事件和获取当前行的数据

    有两个小属性,如下 this.on('rowdblclick', this.readContent, this); this.on('cellclick', this.gridCellClick, t ...

  7. jmeter随笔(3)-从csv中获取带引号的数据详情

    最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论. 1技巧1:从csv中获取带引号的数据详情 背景:我们从csv中获取数据,在jmeter中使用 ...

  8. ObjectStore onFetch方法获取记录总数

    转自:http://blog.csdn.net/earthhour/article/details/38686029 ObjectStore onFetch方法获取记录总数 require(['doj ...

  9. jmeter csv中获取带引号的数据详情

    最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论. 1技巧1:从csv中获取带引号的数据详情 背景:我们从csv中获取数据,在jmeter中使用 ...

  10. 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的路由方案,与原来的方案在使用上差别不 ...

随机推荐

  1. 常用模块二——hashlib加密模块,subprocess模块,logging日志模块

    一.hashlib加密模块 1.何为加密 将明文数据处理成密文数据 让人无法看懂 2.为什么加密 保证数据的安全 3.如何判断数据是否是加密的 一串没有规律的字符串(数字.字母.符号) 4.密文的长短 ...

  2. 小技巧 EntityFrameworkCore 实现 CodeFirst 通过模型生成数据库表时自动携带模型及字段注释信息

    今天分享自己在项目中用到的一个小技巧,就是使用 EntityFrameworkCore 时我们在通过代码去 Update-Database 生成数据库时如何自动将代码模型上的注释和字段上的注释携带到数 ...

  3. Mac系统下word论文参考文献更新域

    写论文的时候可能会遇到后续要增加文献的情况 在参考文献增加后会发现文章中的交叉引用的序号并没有更新 下面分享两种情况的处理方法 一.更新全部域 首先确认自己的打印️项是选中的 2.  打开word偏好 ...

  4. Jmeter 之模块控制器

    模块控制器作用: 模块控制器相当于python中的import 操作,即可以导入本线程组或者其他线程组下的控制器测试片段直接执行. 说明:被导入的测试片段可以是启用.禁用,导入后都将被执行. 字段解释 ...

  5. vue中点按钮回到顶部,和elementUI中置顶按钮的实现

    一般做pc项目都会遇到侧边小按钮点击回到顶部的功能,现在记录一下项目中的实现方法 一.结合动画效果实现 <li class="defa_bt" @click="hd ...

  6. Python AI小项目打包通关:Pyinstaller和Wix都用上了

    最近有个Python小项目要打个包,项目结构比较简单 main.py(主文件), 以及model_050.hdf5 (在云端训练好的AI模型) 主函数里引用了一些包,如下 需要解决的问题: 将main ...

  7. RestTemplate获取json数组

    1.需求描述 接口返回的是一个json数组,要获取到接口返回值并用实体类list接住. 2.解决方法 使用springboot框间自带的Http的工具类RestTemplate调接口,其返回值用hut ...

  8. AIR32F103(八) 集成Helix MP3解码库播放MP3

    目录 AIR32F103(一) 合宙AIR32F103CBT6开发板上手报告 AIR32F103(二) Linux环境和LibOpenCM3项目模板 AIR32F103(三) Linux环境基于标准外 ...

  9. MySQL性能优化浅析及线上案例

    作者:京东健康 孟飞 1. 数据库性能优化的意义 业务发展初期,数据库中量一般都不高,也不太容易出一些性能问题或者出的问题也不大,但是当数据库的量级达到一定规模之后,如果缺失有效的预警.监控.处理等手 ...

  10. 【Linux技术专题系列】「必备基础知识」一起探索和实践sftp配置之密钥方式登录

    FTP服务-vsftp协议实现 我们常用的是FTP协议,主要是通过VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来, ...