У меня есть таблица, как показано ниже:Запрос на макс для каждого года/актер
Create Table Movies (
ID int,
Actor varchar (50),
MovieName varchar (50),
ReleaseDate Date
)
Давайте вставить некоторые выборочные данные
Insert into Movies (ID,Actor,MovieName, ReleaseDate)
Select 1,'Sean Connery', 'Gone gone wild', '2/1/2014'
Union
Select 2,'Roberta Jones', 'My first love', '2/1/2014'
Union
Select 3,'Michael Young', 'Booba spirit', '2/1/2014'
Union
Select 4,'Sean Conenry', 'Gone gone wild 2', '10/1/2014'
Union
Select 5,'Roberta Jones', 'My Second Love', '2/3/2015'
Union
Select 6,'Michael Young', 'Boboa spirit 2', '2/2/2016'
Union
Select 7,'Sean Connery', 'Gone gone wild 3', '2/1/2015'
Union
Select 8,'Sean Connery', 'Gone gone wild 4', '2/1/2016
Я хотел бы знать, актер, дата выпуска и номер фильмов для каждого актера в течение каждого года, но возвращать только год с наибольшим количеством фильмов.
Вот запрос, который прекрасно работает на SQL Server
Select * from Movies
select Actor, Release, NbrMovies
From (Select Actor, Release, NbrMovies, rank() over (partition by Actor Order By NbrMovies desc) as rn
From (Select Actor, year(ReleaseDate) as Release, count(*) as NbrMovies
From Movies
Group by Actor, year(ReleaseDate)
) x
) y
where rn = 1
Я хотел бы знать, если есть способ, чтобы написать запрос без какого-либо окна функции, как ранг() или row_number(), потому что я используйте его также для Oracle.
Спасибо
Oracle поддерживает как 'rank()', так и 'row_number()', поэтому ваш запрос также должен работать там. –