0

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

4

2 回答 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 回答