IMDb 评级:只保留不同的记录

IMDb Ratings: Keeping only distinct records

我正在做一个个人项目,我正在查看一组朋友的 IMDb 电影评级。我正在尝试用所有电影及其属性创建一个主维度 table。当多人对一部电影进行评分时会出现重复,我想获得不同的电影列表。有 4 个属性会根据某人对电影的评分而变化:DateCreated、IMDb_Rating、Genre 和 Votes。我怎样才能只保留 "most recent" 数据的行?

这是一个正在发生的事情的例子:

如您所见,DateCreated 相同,但 IMDb_Rating、Genre 和 Votes 在某些行之间不同。我的解决方案是只保留得票最高的那一行。

在 pseudo-code 中,我想我会使用像 RANK() 这样的 window 排名函数,并按 投票。然后我会创建一个 table,其中只返回排名最高的行。

这有意义吗?对代码的任何帮助都是不可思议的!

select MovieID, Title, Director, Runtime, DateRelease,
MAX(Votes) as maxvotes
INTO #sometable
from yourtable
group by MovieID, Title, Director, Runtime, DateRelease

MAX 会做你需要的。然后,您可以使用 into 将得票最多的行插入新的 table.

另一种解决方案是使用 row_number window 函数。

select MovieID, Title, Director, Runtime, DateRelease,
IMDb_Rating, DateCreated, Genre
from
(select *, row_number() over(partition by movieid order by votes desc) as rn
 from yourtable) t
where rn = 1;
Select <<column names>> 
INTO #sometable
From 
 (select *,
Row_Number() OVER(Partition by MovieID, Title, Director, Runtime, DateRelease Order by Votes Desc) as R_num
from yourtable
 ) Res
Where R_num = 1