我刚开始用sql编码。这是我挣扎的相关子查询的一个例子;任何人都可以用外行的方式解释这里发生的事情:
SELECT id
FROM flights AS f
WHERE distance > (SELECT AVG(distance)
FROM flights
WHERE carrier = f.carrier);
答案 0 :(得分:1)
您的查询在语义上与以下内容完全相同,我发现(个人)更容易阅读。 (我怀疑它的速度也快了一点)......
SELECT id
FROM flights g
JOIN
( SELECT carrier
, AVG(distance) avg_distance
GROUP
BY carrier
) x
ON x.carrier = f.carrier
AND x.distance > avg_distance;
答案 1 :(得分:0)
您的查询将返回所有航班,其距离大于该特定航空公司的平均距离。
一个例子:
id flight carrier distance
1 Brussels Swiss 200
2 New York Swiss 2000
3 Berlin Lufthansa 300
4 London Lufthansa 400
瑞士的平均距离为1100,德国汉莎航空的平均距离为350
您的查询返回:
2
4
第2次飞行是瑞士航空公司,它的距离2000比瑞士的平均距离大1100。
4号航班是汉莎航空公司的航班,其距离400大于汉莎航空公司350的平均距离。