如何从2022年的表中获得100条记录,而不是2021年的值



这是正在运行的代码,但它能更高效并避免子查询吗?

使用的条件:(revenue_2022-revenue_2021(>0或revenue_2022>收入2021

select
id
from
main_tbl
where 
(
(
select
revenue
from
main_tbl
where
id = ts.id
and bq_year = 2022
and revenue > 0
) - 
(
select
revenue
from
main_tbl
where
id = ts.id
and year = 2021
and revenue > 0
)
) > 0
limit 100
main_table:
id    | revenue | year
----------------------
1     | 4500    | 2022
1     | 4600    | 2021
2     | 3300    | 2022
3     | 5800    | 2022
3     | 5500    | 2021

预计产量为id3,因为其2022年的收入大于2021年的

2没有被考虑,因为它没有2021年可供比较。

如果还有其他年份,或者每个id+年份有多个条目,你想做什么有点不清楚,但你可以做一些事情,比如:

select
id
from main_table y2022, main_table y2021
where y2022.year = 2022
and y2021.year = 2021
and y2022.id = y2021.id
and y2022.revenue > y2021.revenue
limit 100

最新更新