У меня есть несколько таблиц, содержащих данные о рейсе, и я пытаюсь вернуть тип самолета, который использовался больше всего
До сих пор я пришел к следующему запросу:
SELECT Planes.type, COUNT(Planes.type) AS Number FROM Flights
JOIN Planes ON Flights.idPlane = Planes.idPlanes
GROUP BY Planes.Type
Он возвращает следующее:
type Number
737 1
747 4
767 1
777 2
787 2
A320 1
A330 1
Теперь я только пытаюсь увидеть наибольшее число с соответствующим типом. То, что я пробовал, было GROUP BY Number DESC
, но это говорит мне. Код ошибки 1056 не может GROUP BY it. Если бы это сработало, я бы использовал LIMIT, чтобы показать только верхнюю запись, так как это было бы самым высоким.
Какой был бы лучший способ решить эту проблему?
Попробуй это...
SELECT Planes.type, COUNT(*) AS Number
FROM Flights JOIN Planes ON
Flights.idPlane = Planes.idPlanes
GROUP BY Planes.Type
ORDER BY Number DESC;
он получит правильный результат.
Это то, что вы ищете.
SELECT Planes.type, COUNT(Planes.type) AS Number
FROM Flights
JOIN Planes ON Flights.idPlane = Planes.idPlanes
GROUP BY Planes.Type
ORDER BY 2 DESC
LIMIT 1
ORDER BY 2
подвержен ошибкам! Что, если вы COUNT(Planes.type)
столбец перед COUNT(Planes.type)
.. Ну, этот запрос небольшой, поэтому вы можете поймать ORDER BY 2
но что, если у вас был запрос длиной более страницы А4?
ORDER BY
для сортировки.ORDER BY Number DESC
а затем выбрать первую запись?