У меня есть таблица с информацией о рейсах между городами, которая выглядит следующим образом:
origin_city dest_city time
Dothan AL Atlanta GA 171
Dothan AL Elsewhere AL 2
Boston MA New York NY 5
Boston MA City MA 5
New York NY Boston MA 5
New York NY Poughkipsie NY 2
Я хочу вернуть для каждого города-источника максимальное время полета, а также город или города назначения, к которым относятсяЭто.Таким образом, результаты будут выглядеть следующим образом:
Dothan AL Atlanta GA 171
Boston MA New York NY 5
Boston MA City MA 5
New York NY Boston MA 5
На основании других потоков, например Причина столбца недопустима в списке выбора, поскольку она не содержится ни в статистической функции, ни в предложении GROUP BY, я написал запрос, который возвращает максимальное время полета из каждого города происхождения:
SELECT DISTINCT F.origin_city AS origin_city, Max(F.actual_time) AS actual_time
FROM Flights AS F
GROUP BY F.origin_city
ORDER BY F.origin_city
Но я получаю различные ошибки, когда пытаюсь включить пункт (ы), соответствующие этому времени.Например:
SELECT DISTINCT F.origin_city AS origin_city, Max(F.actual_time) AS actual_time, F.dest_city AS dest_city
FROM Flights AS F
GROUP BY F.origin_city
HAVING
(MAX(F.actual_time) = F.actual_time)
ORDER BY F.origin_city
GO
... выдает мне сообщение об ошибке «Столбец« Tickets.actual_time »недопустим в предложении HAVING, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY».Я попытался добавить F.actual_time в группу, но затем я получил тонны результатов, потому что я получил максимальное время полета для каждой пары отправления / назначения (я думаю).Кроме того, поле actual_time должно содержаться в статистической функции: Макс.
Этот код:
SELECT F.origin_city AS origin_city, Max(F.actual_time) AS actual_time, F.dest_city AS dest_city
FROM Flights as F
WHERE F.actual_time IN (SELECT MAX(actual_time) FROM Flights AS F2 GROUP BY F2.origin_city)
GROUP BY F.origin_city
выдает аналогичную ошибку: столбец «Tickets.dest_city» недопустим в списке выборапотому что он не содержится ни в статистической функции, ни в предложении GROUP BY.
Как правильно вернуть все 3 столбца?