如果高于平均水平,则选择细分ID

时间:2020-10-19 13:01:19

标签: sql postgresql

我有一个名为combinance_table的表。首先,我需要找到 travel_time average。在此平均值下,我需要select segmentids ,它们比我们计算的平均值。 是否可以编写这样的查询? enter image description here

2 个答案:

答案 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,其平均旅行时间大于总体平均旅行时间。

注意:这种逻辑也可以使用窗口函数来实现,但是我认为这种表述很明确。