首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检索PostgreSQL中日期范围内的记录

检索PostgreSQL中日期范围内的记录
EN

Stack Overflow用户
提问于 2019-03-20 07:18:14
回答 2查看 16关注 0票数 0

对于每个客户,我都会尝试检索最近一次submit_date的45天内的记录。

代码语言:javascript
复制
customer  submit_date   salary
      A   2019-12-31   10000
      B   2019-01-01   12000
      A   2017-11-02   11000
      A   2019-03-03   3000
      B   2019-03-04   5500
      C   2019-01-05   6750
      D   2019-02-06   12256
      E   2019-01-07   11345
      F   2019-01-08   12345
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-20 07:22:56

窗口函数提供了帮助:

代码语言:javascript
复制
SELECT customer, submit_date, salary
FROM (SELECT customer, submit_date, salary,
             max(submit_date) OVER (PARTITION BY customer) AS latest_date
      FROM thetable) AS q
WHERE submit_date >= latest_date - 45;
票数 1
EN

Stack Overflow用户

发布于 2019-03-20 07:27:59

我倾向于尝试:

代码语言:javascript
复制
select t.*
from t
where t.submit_date >= (select max(t2.submit_date) - interval '45 day'
                        from t t2
                       );

我认为这可以很好地利用(submit_date)上的索引。

如果您希望与每个客户相关,请使用correlation子句:

代码语言:javascript
复制
select t.*
from t
where t.submit_date >= (select max(t2.submit_date) - interval '45 day'
                        from t t2
                        where t2.customer = t.customer
                       );

这需要一个关于(customer, submit_date)的索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55251339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档