查找距给定日期/时间戳最近的记录(之前或之后)

用户名

我想知道如何利用postgresql的时间戳数据类型来计算一些统计信息。例如,假设我要计算每次交易后的盈亏,因此我有一个三列的表tmp:

create table tmp
(date     timestamp,
 customer text,
 price    numeric)

样本视图:

date                 | customer | price 
2014-03-17 18:23:51  | buyer    | 100
2014-03-17 18:14:24  | buyer    | 101   
2014-03-17 18:09:14  | seller   | 102
2014-03-17 18:03:52  | buyer    | 103
2014-03-17 17:57:51  | seller   | 104
2014-03-17 17:52:43  | seller   | 105
2014-03-17 17:52:36  | buyer    | 106
2014-03-17 17:52:35  | seller   | 107
2014-03-17 17:52:35  | buyer    | 108

现在的目标是,根据相关记录之前或之后相反类型的最接近交易(买或卖),找到买方支付的价格与卖方支付的价格之间的价差

例如,从顶部看事务5:

2014-03-17 17:57:51  | seller   | 104 

客户='买方'紧随其后的记录是00:06:01之后,而客户='买方'紧随其前的记录是00:05:15之前的记录,因此在这里我们要差价104-106 = 2我搜索了周围,却找不到任何提示。谢谢。

编辑:在上面的示例中,它使用之前的价格,但是我试图找到一种通用的解决方案,该解决方案将确定在计算中使用的最接近的价格(之前或之后)。

克洛多尔多·内托

SQL小提琴

select distinct on (t1.date, t1.customer)
    t1.date, t1.customer, t1.price,
    t1.price - t2.price as price_diff,
    abs(extract(epoch from (t1.date - t2.date))) as seconds_diff 
from
    tmp t1
    inner join
    tmp t2 on t1.customer != t2.customer
order by t1.date desc, t1.customer, seconds_diff

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在给定日期时间之前查找列表中的最新日期时间

来自分类Dev

获取每个给定日期之前的雇员的最新记录

来自分类Dev

获取每个给定日期之前的雇员的最新记录

来自分类Dev

返回给定日期或日期/时间表达式之前或之后的指定月份数的日期

来自分类Dev

查询以在记录“开始”和“停止”日期的表中查找给定日期的活动记录

来自分类Dev

给定日期/时间和时区,如何将其转换为UTC时间戳?

来自分类Dev

如何在 Javascript 中获取给定日期、时间和区域的时间戳

来自分类Dev

Excel 2010:夏令时-计算任何给定日期的时间戳之间的小时数

来自分类Dev

在给定日期之前查找“状态更改”的正确SQL查询是什么?

来自分类Dev

SQL:查找具有给定日期范围内每月数据的记录

来自分类Dev

SQL:查找具有给定日期范围内每个月的数据的记录

来自分类Dev

如何使用C#检索给定日期(无论时间如何)的记录?

来自分类Dev

Prolog,比较日期以查看给定日期之前

来自分类Dev

Google Calendar API算法可查找给定日期的开放时间段

来自分类Dev

查找从给定日期起X年内将要工作的时间

来自分类Dev

在 Pandas 中查找包含最接近给定日期时间的字符串

来自分类Dev

选择给定日期和日期之间的记录。

来自分类Dev

在Python中从给定日期查找日期

来自分类Dev

如何从给定日期查找星期的开始日期?

来自分类Dev

在给定日期之前加入最新值

来自分类Dev

如何在排序列中查找给定日期之后的第一个日期

来自分类Dev

strtotime可以在给定日期之后返回一天中的日期和时间吗?

来自分类Dev

返回给定日期内的所有记录

来自分类Dev

SQL从给定日期选择前3条记录

来自分类Dev

SQL从给定日期选择前3条记录

来自分类Dev

查找给定日期的最后一天

来自分类Dev

根据给定日期从列表中查找项目

来自分类Dev

如何指定给定日期对象的时间?

来自分类Dev

使用命令行在给定日期之后在Windows上查找修改过的文件

Related 相关文章

  1. 1

    在给定日期时间之前查找列表中的最新日期时间

  2. 2

    获取每个给定日期之前的雇员的最新记录

  3. 3

    获取每个给定日期之前的雇员的最新记录

  4. 4

    返回给定日期或日期/时间表达式之前或之后的指定月份数的日期

  5. 5

    查询以在记录“开始”和“停止”日期的表中查找给定日期的活动记录

  6. 6

    给定日期/时间和时区,如何将其转换为UTC时间戳?

  7. 7

    如何在 Javascript 中获取给定日期、时间和区域的时间戳

  8. 8

    Excel 2010:夏令时-计算任何给定日期的时间戳之间的小时数

  9. 9

    在给定日期之前查找“状态更改”的正确SQL查询是什么?

  10. 10

    SQL:查找具有给定日期范围内每月数据的记录

  11. 11

    SQL:查找具有给定日期范围内每个月的数据的记录

  12. 12

    如何使用C#检索给定日期(无论时间如何)的记录?

  13. 13

    Prolog,比较日期以查看给定日期之前

  14. 14

    Google Calendar API算法可查找给定日期的开放时间段

  15. 15

    查找从给定日期起X年内将要工作的时间

  16. 16

    在 Pandas 中查找包含最接近给定日期时间的字符串

  17. 17

    选择给定日期和日期之间的记录。

  18. 18

    在Python中从给定日期查找日期

  19. 19

    如何从给定日期查找星期的开始日期?

  20. 20

    在给定日期之前加入最新值

  21. 21

    如何在排序列中查找给定日期之后的第一个日期

  22. 22

    strtotime可以在给定日期之后返回一天中的日期和时间吗?

  23. 23

    返回给定日期内的所有记录

  24. 24

    SQL从给定日期选择前3条记录

  25. 25

    SQL从给定日期选择前3条记录

  26. 26

    查找给定日期的最后一天

  27. 27

    根据给定日期从列表中查找项目

  28. 28

    如何指定给定日期对象的时间?

  29. 29

    使用命令行在给定日期之后在Windows上查找修改过的文件

热门标签

归档