У меня есть следующий запрос
USE Movies;
SELECT
c.CountryName
,d.DirectorName
,f.FilmRunTimeMinutes AS [TotalRunTime]
FROM
tblFilm as f
JOIN tblCountry as c on c.CountryID = f.FilmCountryID
JOIN tblDirector as d on d.DirectorID = f.FilmDirectorID
ORDER BY
DirectorName
, который дает мне следующий результат:
пока все хорошо.
Затем я сгруппировал свой результат, чтобы суммировать TotalRunTime для каждого директора и страны:
SELECT
c.CountryName
,d.DirectorName
,SUM(CONVERT(DECIMAL, f.FilmRunTimeMinutes)) AS [TotalRunTime]
,COUNT(*)
FROM
tblFilm as f
JOIN tblCountry as c on c.CountryID = f.FilmCountryID
JOIN tblDirector as d on d.DirectorID = f.FilmDirectorID
GROUP BY
CountryName
,DirectorName
, что дает мне следующий результат:
Теперь я хочу, чтобы актер с наибольшим количеством (*) (столбец «без имени столбца»), и я попробовал это:
SELECT
c.CountryName
,d.DirectorName
,SUM(CONVERT(DECIMAL, f.FilmRunTimeMinutes)) AS [TotalRunTime]
,COUNT(*)
FROM
tblFilm as f
JOIN tblCountry as c on c.CountryID = f.FilmCountryID
JOIN tblDirector as d on d.DirectorID = f.FilmDirectorID
GROUP BY
CountryName
,DirectorName
HAVING
COUNT(*) = MAX(Count(*))
Но это не работает:(. Не могли бы вы объяснить, почему он не работает в деталях, и как я могу получить строку с максимальным (count (*))? В этом примере это должно дать мне строку Japan | Akira usw.