SQL筛选具有不同条件的两个聚合函数

问题描述 投票:0回答:1

我想获得AVG(arr_delay_new) WHERE fl_date BETWEEN '2017/07/24' and '2017/07/31'AVG(arr_delay)_new WHERE fl_date BETWEEN '2017/07/01' and '2017/07/23'之间的差。

这当然会返回0,并且没有日期条件。

SELECT airline_name,
AVG(arr_delay_new) - AVG(arr_delay_new)
FROM Flight_delays F
JOIN Airlines A
ON A.airline_id = F.airline_id
GROUP BY airline_name
sql filter multiple-conditions
1个回答
0
投票

您可以使用条件聚合:

SELECT airline_name,
       (AVG(CASE WHEN fl_date BETWEEN '2017-07-24' and '2017-07-31' THEN arr_delay_new END) -
        AVG(CASE WHEN fl_date BETWEEN '2017-07-01' and '2017-07-23' THEN arr_delay_new END)
       ) as AVG_DIFF
FROM Flight_delays F JOIN
     Airlines A
     ON A.airline_id = F.airline_id
GROUP BY airline_name;

这假设arr_delay_new具有可以平均的类型。一些数据库不愿直接对日期/时间进行平均。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.