Нужно добавить id пассажира в SELECT и GROUP BY. Группировка только по имени ошибочно объединяет разных пассажиров с одинаковыми именами; INNER JOIN исключит тех, кто не летал.
Сортировка пассажиров по количеству полетов
Нужно добавить id пассажира в SELECT и GROUP BY. Группировка только по имени ошибочно объединяет разных пассажиров с одинаковыми именами; INNER JOIN исключит тех, кто не летал.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Сортировка пассажиров по количеству полетов
Вывести идентификатор, имя и количество перелётов каждого пассажира, совершившего хотя бы 1 полёт. Результат отсортировать по количеству перелётов (по убыванию) и имени (по возрастанию).
Используйте конструкцию "as count" для агрегатной функции подсчета количества перелетов. Это необходимо для корректной проверки.
Поля в результирующей таблице: id, name, count
Код из скрипта: SELECT Passenger.name AS name, COUNT(Pass_in_trip.id) AS count FROM Passenger JOIN Pass_in_trip ON Passenger.id = Pass_in_trip.passenger GROUP BY Passenger.name ORDER BY count DESC, name ASC;
Ответ
Нужно добавить id пассажира в SELECT и GROUP BY. Группировка только по имени ошибочно объединяет разных пассажиров с одинаковыми именами; INNER JOIN исключит тех, кто не летал.
Запрос для указанной схемы:
SELECT Passenger.id AS id,
Passenger.name AS name,
COUNT(*) AS count
FROM Passenger
JOIN Pass_in_trip
ON Passenger.id = Pass_in_trip.passenger
GROUP BY Passenger.id, Passenger.name
ORDER BY count DESC, name ASC;
Здесь предполагается, что одна строка Pass_in_trip соответствует одному перелёту пассажира. Поэтому COUNT(*) считает нужные записи. Для полной детерминированности при совпадении количества и имени можно дополнительно сортировать по id, если это допускает проверка задачи.