【发布时间】:2015-12-31 09:01:39
【问题描述】:
我有一个数据集,该数据集已按 Person 和 Class 列分组,我将此查询用于此过程:
SELECT Person,Class, MAX(TimeSpent) as MaxTimeSpent
FROM Persons
GROUP BY Person,Class
输出:
Person Class MaxTimeSpent
--------|--------|-------------|
MJ | 0 | 0 |
MJ | 1 | 659 |
MJ | 2 | 515 |
我想要做的是获取此数据集中具有最大Class 值的行(本例中为第 3 行)。
我该怎么做?任何帮助,将不胜感激。
【问题讨论】:
-
@StuartLC
TOP 1不会工作,因为我使用WHEREcaluse 可以更轻松地测试我的查询。 -
在这种情况下,搜索 Group Wise Maximum - 一个好的策略是使用分区对数据进行分组并使用
ROW_NUMBER(无关联)或RANK(有关联)来编号每个组中的行,按Class排序,然后只过滤掉 Row / Rank = 1 行。
标签: sql sql-server group-by greatest-n-per-group