Мне нужно показать название лодки, которая совершила наибольшее количество поездок, поэтому я сделал запрос, который подсчитывает количество поездок:
SELECT B.IdBoat, COUNT(T.IdTrip)
FROM Trip T INNER JOIN Boat B ON T.IdBoat=B.IdBoat
GROUP BY B.IdBoat
Теперь мне нужно показать имя той с МАКС. ПоездкиКак использовать этот запрос в качестве подзапроса, без использования ORDER BY DESC и TOP 1, но с использованием MAX?В настоящее время получил:
SELECT B.Name
FROM Trip T INNER JOIN Boat B ON T.IdBoat=B.IdBoat
WHERE B.IdBoat = MAX( the sub query above)
также пытался
SELECT B.Name, T.IdTrip
FROM Boat B INNER JOIN Trip T ON B.IdBoat=T.IdBoat
WHERE B.IdBoat IN (
SELECT MAX(T.NTrips) FROM
(SELECT B.IdBoat AS [IdBoat], COUNT(T.IdTrip) AS [NTrips]
FROM Trip T INNER JOIN Boat B ON B.IdBoat=T.IdBoat
GROUP BY B.Boat) T
GROUP BY T.IdBoat)
Приведенное выше вернуло полное число 3 на имя лодки вместо правильного 2.
IЯ пытался найти и найти указанную проблему в stackoverflow и других, но не могу адаптировать свое решение к моему запросу, любая помощь - хорошая помощь.
Спасибо.
edit 1. В ответ на запрос я предоставлю некоторые данные, которые помогут лучше понять проблему
Настольная лодка:
IdBoat | Name
1 | 'SS Sparrow'
2 | 'SS AndaNoMar'
Table Trip
IdTrip | IdBoat
1 | 1
2 | 1
3 | 2
Подзапрос 1 (COUNT)
IdBoat | NTrips
2 | 1
1 | 2