我有一个名为combination_table 的表。首先我需要找到travel_time average。有了这个平均值,我需要select 分段高于我们计算的平均值。是否可以编写这样的查询?

2 回答
2
计算平均值:
select avg(travel_time)
from combination_table;
将此用作子查询:
select c1.segmentid
from combination_table c1
where c1.travel_time > (select avg(c2.travel_time)
from combination_table c2);
于 2020-10-19T13:04:35.560 回答
0
嗯。. . 我认为你想要聚合和过滤:
select s.*
from (select segment_id, avg(travel_time) as avg_travel_time
from combination_table ct
group by segment_id
) s cross join
(select avg(travel_time) as avg_travel_time
from combination_table
) overall
where s.avg_travel_time > overall.avg_travel_time;
这将返回segment_ids,其平均旅行时间大于整体平均值。
注意:这个逻辑也可以使用窗口函数来实现,但我认为这个表述的意图很明确。
于 2020-10-19T13:11:32.257 回答