【发布时间】:2012-01-21 22:36:50
【问题描述】:
这是我的数据上下文:
Photos (ID, Title)
Users (ID, FullName)
Ratings (PhotoID, UserID, Value, Date)
业务规则:
- 用户可以从 1 到 5 对照片进行评分
- 给定用户只能对给定照片评分一次
我想选择最近(比如说 3 天)内评分最高的照片。那么今天、昨天和前天哪张照片的评分最高呢?如果可能的话,我想让天数可变。我必须显示最后 N 天,只有他们评分不包括空天。
我想在单个查询/结果中获取照片,因为我想将其绑定到 ListView 以在 Web 表单上显示它们。
我是这样开始的:
DECLARE @days INT = 3
SELECT TOP (@days) ... FROM Ratings
INNER JOIN Photos ON Photos.ID = Ratings.PhotoID
GROUP BY DATEDIFF(day, [Date], CURRENT_TIMESTAMP)
ORDER BY DATEDIFF(day, [Date], CURRENT_TIMESTAMP) DESC
如何按 PhotoID 对我的组进行分组,按 SUM(Value) 排序并从每个组中选择第一个?非常感谢您的帮助。
【问题讨论】:
-
我已经编辑了我的问题,你可以看到我的几行代码。我认为我的问题很常见,所以我昨天开始寻找解决方案。但我没有运气,我无法构建一个格式良好的搜索查询来找到解决方案。
标签: asp.net sql sql-server sql-server-2008 tsql