gpt4 book ai didi

sql - 有效地根据最小日期匹配两个表

转载 作者:行者123 更新时间:2023-11-29 13:58:20 26 4
gpt4 key购买 nike

我有两个表,一个包含季度数据,另一个包含每日数据。我想加入这两个表,以便每天在每日数据中选择该季度的季度数据并每天返回。我正在使用 Postgres 9.3。

当前查询如下:

select 
a.ID,
a.datadate,
b.*,
case when a.datadate = b.rdq then 1 else 0 end as VALID
from proj_data a, proj_rat b
where a.id = b.id
and b.rdq = (select min(rdq)
from proj_rat c
where a.id = c.id and a.datadate >= c.rdq);

但它非常慢,我需要为数千个 ID 执行此操作。谁能提出更有效的解决方案?

最佳答案

这消除了在 where 子句中使用子查询的需要

select 
ID,
a.datadate,
b.*,
(a.datadate = b.rdq)::integer as VALID
from
proj_data a
inner join
(
select distinct on (id, rdq) *
from project_rat
order by id, rdq
) b using(id)
where a.datadate >= b.rdq;

关于sql - 有效地根据最小日期匹配两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27003923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com