如何解决在最短日期的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)
任何能帮助我开箱即用的资源将不胜感激,主要是尝试在这里学习。
表格-
解决方法
这会在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 举报,一经查实,本站将立刻删除。