Не удается сгруппировать с AS MySQL

0

У меня есть несколько таблиц, содержащих данные о рейсе, и я пытаюсь вернуть тип самолета, который использовался больше всего

До сих пор я пришел к следующему запросу:

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, чтобы показать только верхнюю запись, так как это было бы самым высоким.

Какой был бы лучший способ решить эту проблему?

  • 0
    Используйте ORDER BY для сортировки.
  • 0
    Если вам просто нужен тип с наибольшим числовым значением, почему бы вам не использовать ORDER BY Number DESC а затем выбрать первую запись?
Теги:

2 ответа

2
Лучший ответ

Попробуй это...

SELECT Planes.type, COUNT(*) AS Number
FROM Flights JOIN Planes ON 
    Flights.idPlane = Planes.idPlanes
GROUP BY Planes.Type 
ORDER BY Number DESC;

он получит правильный результат.

1

Это то, что вы ищете.

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
  • 0
    ORDER BY 2 подвержен ошибкам! Что, если вы COUNT(Planes.type) столбец перед COUNT(Planes.type) .. Ну, этот запрос небольшой, поэтому вы можете поймать ORDER BY 2 но что, если у вас был запрос длиной более страницы А4?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню