微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在最短日期的10年内获取所有具有最高价格的行

如何解决在最短日期的10年内获取所有具有最高价格的行

我正在尝试优化此特定查询,但遇到了一些麻烦,这是我能诚实提出的最佳建议。我正在尝试获取最短日期后10年内价格最高的所有行。

Select * from person p join orders o 
on p.id=o.id
where o.orderdate - (select min(orderdate) from orders)<=3650 
and price = 
(Select o.price
from person p join orders o 
on p.id=o.id
where o.orderdate - (select min(orderdate) from orders)<=3650
order by price desc limit 1)

任何能帮助我开箱即用的资源将不胜感激,主要是尝试在这里学习。

表格-

Orders

Person

解决方法

这会在order的十年内获得有关每个max(price)orderdate的{​​{1}}的信息

min(orderdate)
,

使用窗口功能:

select op.*
from (select . . .   -- list the columns here
             min(o.order_date) over (partition by id) as min_order_date,first_value(o.order_date) over (partition by id order by price desc,order_date asc) as max_price_order_date
      from person p join
           orders o 
           on p.id = o.id
     ) op
where max_price_order_date < min_order_date + interval '10 year'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。