我已经在之前的一篇文章中看到了答案,它工作得很好,但我有一个小难题。使用相同的场景:
列出每个班级学生成绩的表。我想要一个如下所示的结果集:
BIO...B
CHEM...C 其中"B“和"C”是类的模式,并且想要获取类的模式。
一旦我应用了下面的查询,我得到了以下输出:
Class | Score | Freq | Ranking
2010 | B | 8 | 1
2010 | C | 8 | 1
2011 | A | 10 | 1
2012 | B | 11 | 1在2010年,我有两个相同频率的年级。如果..我只想显示最高分,在这种情况下将是"B“。我怎样才能做到这一点呢?我需要对字母等级进行排名,但我不确定如何进行。请给我建议。谢谢。
上一篇文章:SQL Server mode SQL
我用来检索数据的查询是Peter的答案:
;WITH Ranked AS (
SELECT
ClassName, Grade
, GradeFreq = COUNT(*)
, Ranking = DENSE_RANK() OVER (PARTITION BY ClassName ORDER BY COUNT(*) DESC)
FROM Scores
GROUP BY ClassName, Grade
)
SELECT * FROM Ranked WHERE Ranking = 1发布于 2012-11-08 05:20:24
更改:
SELECT * FROM Ranked WHERE Ranking = 1 至:
SELECT Class, MIN(Grade) AS HighestGrade, Freq, Ranking
FROM Ranked
WHERE Ranking = 1
GROUP BY Class, Freq, Rankinghttps://stackoverflow.com/questions/13278372
复制相似问题