【发布时间】:2015-08-24 16:43:53
【问题描述】:
我正在开展一个个人项目,我正在查看一组朋友的 IMDb 电影评分。我正在尝试制作一个包含所有电影及其属性的主维度表。当多人评价一部电影时会有重复,我想获得不同的电影列表。有 4 个属性会根据某人对电影的评分而改变:DateCreated、IMDb_Rating、Genre 和 Votes。如何仅保留包含“最新”数据的行?
下面是正在发生的事情的一个例子:
如您所见,DateCreated 是相同的,但 IMDb_Rating、Genre 和 Votes 在某些行之间是不同的。我的解决方案是保留得票最高的那一行。
在伪代码中,我想我会使用像 RANK() 这样的窗口排名函数,并按 Votes 对每组 MovieID、Title、Director、Runtime 和 DateRelease 进行排名。然后我会创建一个表,其中只返回排名最高的行。
这有意义吗?对代码的任何帮助都会令人难以置信!
【问题讨论】:
-
与问题完全无关,但您可能希望进一步规范化您的数据库,因为现在您正在存储一堆重复的信息。当然,这完全取决于您,但是以您的方式存储它会导致您的数据库比其他方式增长得更快。
标签: sql sql-server-2012 window-functions