我有一个名为combinance_table的表。首先,我需要找到 travel_time average
。在此平均值下,我需要select
segmentids ,它们比我们计算的平均值高。
是否可以编写这样的查询?
答案 0 :(得分: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);
答案 1 :(得分: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_id
,其平均旅行时间大于总体平均旅行时间。
注意:这种逻辑也可以使用窗口函数来实现,但是我认为这种表述很明确。