我是博士后的新手,我提出了以下问题。如果有城市的经济价格比商业价格便宜,我需要回答这个问题。目前我的要求如下:
with cte_money as (
select
ad.city ->> 'ru' as city,
fare_conditions,
amount
from ticket_flights tf
join flights as f using(flight_id)
join airports_data as ad on f.arrival_airport = ad.airport_code
order by city, fare_conditions asc
)
select
city,
(select max(amount) where fare_conditions = 'Economy') as Max_Economy,
(select min(amount) where fare_conditions = 'Business') as Min_Business
from cte_money
group by city, fare_conditions
order by city asc
结果如下(黄色):
如何将同一城市的最大值与最小值合并在一行中,并相互比较?总之,我只需要显示经济舱比商务舱便宜的城市。先谢谢你
2条答案
按热度按时间6rvt4ljy1#
我理解您的问题和模式,不需要cte或嵌套查询。您可以使用聚合和
having
过滤条款:你可以重复条件句
min()
以及max()
在select
子句,如果要在结果集中显示它们。axr492tv2#
对于这个groupby查询,当您将条件放入聚合时,不需要子选择。然后,您可以使用having子句轻松筛选更便宜的经济舱: