我想获得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
您可以使用条件聚合:
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
具有可以平均的类型。一些数据库不愿直接对日期/时间进行平均。