我有一个有5列的表,我需要找到前两个记录的count列之差。我可以根据某些条件获得前两名的记录。例子,
我的table看起来像:
name address count current_date_time
john LA 102 2019-07-12 12:24:38
peter MAC 105 2019-07-12 12:24:40
john NY 210 2019-07-12 12:24:02
john WD 18 2019-07-12 12:24:12
选择查询以获取前两行:
SELECT count
FROM table_name
WHERE name="john"
ORDER BY current_date_time DESC LIMIT 2
结果是:
count
102
18
但我需要102和18之间的差值。
如何编写子查询?
2条答案
按热度按时间odopli941#
使用超前或滞后分析函数来处理按某列排序的上一行/下一行:
例如:
退货:
wydwbb8l2#
应用
lead()
窗口解析函数来确定下一行的列值。去哪儿
lead(count,1,0)
1
表示偏移,即。1
排在后面,然后0
表示默认值。postgres演示(
hive
也有类似的语法)