我有一个看起来像这样的表:
Date | AttributeId | Score |
4/4/2013 1 0.64
4/6/2013 2 0.35
4/6/2013 1 0.86
4/4/2013 5 0.34
4/4/2013 4 0.23
4/7/2013 3 0.54
4/8/2013 1 0.66
我可以在 MS SQL 中构造一个查询,以便我只获得特定 AttributeID 的最后一次出现吗?从上面的示例中,查询将返回:
Date | AttributeId | Score |
4/6/2013 2 0.35
4/4/2013 5 0.34
4/4/2013 4 0.23
4/7/2013 3 0.54
4/8/2013 1 0.66
如果有帮助,我知道只有 5 个 AttributeID(1-5)并且它们不会改变。
目前我正在查询最后 15 条记录(并希望这些记录包含我所有的 5 个属性),然后在应用程序级别上,提取所有 5 个属性的最新分数。
有更好的解决方案吗?
编辑:
另外,如果我有Date
、和UserId
,我可以以某种方式将我的结果分组吗?
当我尝试你的答案时,我看到我只得到最新的结果,不管是哪个。
对不起,我应该早点 提到AttributeId
Score
UserId
UserId
UserId
编辑 2:我需要按属性获取每个用户的最新分数,并将他们的分数平均在属性上。示例如下所示:
Date | UserId | AttributeId | Score |
4/4/2013 1 1 0.64
4/6/2013 1 1 0.35
4/6/2013 2 1 0.86
4/4/2013 1 3 0.34
4/4/2013 2 3 0.23
4/7/2013 2 1 0.54
4/8/2013 1 5 0.69
4/4/2013 2 4 0.27
4/7/2013 2 2 0.54
4/9/2013 1 4 0.66
4/9/2013 2 2 0.58
4/10/2013 1 4 0.66
4/9/2013 1 2 0.33
4/11/2013 2 5 0.10
第一个结果如下所示:
Date | UserId | AttributeId | Score |
4/6/2013 1 1 0.64
4/9/2013 1 2 0.33
4/4/2013 1 3 0.34
4/10/2013 1 4 0.66
4/8/2013 1 5 0.69
4/7/2013 2 1 0.86
4/9/2013 2 2 0.58
4/4/2013 2 3 0.23
4/4/2013 2 4 0.27
4/11/2013 2 5 0.10
平均分数后的最后一个结果UserId
:
UserId | AverageScore |
1 0.532
2 0.408