6
我已经看到了以前的帖子的答案,这工作正常,但我有一个小小的困境。 采取相同的情景:在SQL中计算模式
一张表,列出学生的成绩每班。我想要的结果集,看起来像:
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
我用来检索数据是从彼得的答案查询:
;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
好的,我做了改变。它工作正常。我只是试图在这个查询中消化MIN函数的使用。谢谢。 – Frida
MIN()的工作原因是因为“更高”的成绩正好在字母表的前面。既然你想在两个模式绑定的时候返回更好的成绩,那么通过min函数找到更接近字母表开头的那个,这有助于做到这一点。 – zipppy