逐列选择最大值

时间:2017-05-18 07:17:42

标签: sql sql-server group-by rank

我有一个表Question,其中包含

QuestionId, Question, AnswerId, Answer, AnsVotes(integer), AnsDate(Date)

一个QuestionId可以有多个AnswerId因此有多个条目。 AnswerId是唯一的

我如何过滤记录以获得QuestionId AnswerId最多AnsVotes的记录?如果Ansvotes对于多个条目相同,则获取最新AnsDate(日期列)的行。

1 个答案:

答案 0 :(得分:1)

你想要获得最高级别的条目,而不是为了关系。请使用select top(1) * from question order by ansvotes desc, ansdate desc;

ROW_NUMBER

或者您想获得每个问题的最佳答案吗?然后,您将使用select * from ( select q.*, row_number() over (partition by questionid order by ansvotes desc, ansdate desc) as rn from question q ) answers where rn = 1;

对记录进行排名
@Query("select u.moduleName from UserBehaviorLog u group by u.moduleName order by u.createdDate desc ")