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