首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL中的计算模式

SQL中的计算模式
EN

Stack Overflow用户
提问于 2012-11-08 05:16:30
回答 1查看 33.7K关注 0票数 7

我已经在之前的一篇文章中看到了答案,它工作得很好,但我有一个小难题。使用相同的场景:

列出每个班级学生成绩的表。我想要一个如下所示的结果集:

代码语言:javascript
复制
BIO...B 
CHEM...C 

其中"B“和"C”是类的模式,并且想要获取类的模式。

一旦我应用了下面的查询,我得到了以下输出:

代码语言:javascript
复制
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的答案:

代码语言:javascript
复制
;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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-08 05:20:24

更改:

代码语言:javascript
复制
SELECT * FROM Ranked WHERE Ranking = 1 

至:

代码语言:javascript
复制
SELECT Class, MIN(Grade) AS HighestGrade, Freq, Ranking
FROM Ranked
WHERE Ranking = 1
GROUP BY Class, Freq, Ranking
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13278372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档