Задать вопрос
@wfkryukov

Почему в решении этого задания нужно использовать COUNT, а не SUM?

Здравствуйте. В ходе изучения SQL столкнулся с проблемой при решении задачи на онлайн-тренажёре. Объясните, пожалуйста, почему в этом задании нужно использовать агрегатную функцию COUNT, а не SUM.

Задание:
Выведите нагруженность (число пассажиров) каждого рейса (trip). Результат вывести в отсортированном виде по убыванию нагруженности. Используйте конструкцию "as count" для агрегатной функции подсчета числа пассажиров на рейсе. Это необходимо для корректной проверки.

Моё изначальное решение:
SELECT trip,
              SUM (passenger) as count
    FROM Pass_in_trip 
  GROUP BY trip
  ORDER BY SUM (passenger) DESC


Правильное решение, которое принимает онлайн-тренажёр:
SELECT trip,
             COUNT (passenger) as count
  FROM Pass_in_trip
 GROUP BY trip
 ORDER BY COUNT (passenger) DESC


По моей логике, второе (правильное) решение выводит не число пассажиров, а подсчитывает количество строк в столбце passenger по каждому рейсу. Объясните, пожалуйста, где в рассуждениях я допускаю ошибку?

Первая часть таблицы
632a4013889ee367202629.jpeg
Вторая часть таблицы
632a402040eda616076274.jpeg

632a3e5de9ce6342786315.jpeg
  • Вопрос задан
  • 4149 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
SagePtr
@SagePtr
Еда - это святое
Потому что нужно подсчитать количество id'шников, а не сумму id'шников, которая вообще не имеет никакого смысла
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Когда вам нужно посчитать КОЛИЧЕСТВО монет у вас кармане - вы НЕ суммируете их номинал SUM(все_монеты) = 5 р. + 2 р. + 1 р. + 1 р. = 9 р., а считаете именно их количество COUNT(все_монеты) = 1 монета + 1 монета + 1 монета + 1 монета = 4 монеты.
Теперь чувствуете разницу?

P.S. А в запросе лучше сделать COUNT(place), потому что на пассажира с ребёнком (один паспорт, один passenger) должно быть зарегистрировано два места.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы