如何计算得到相同分数的学生,并在SQL Server中显示该组的分数

时间:2015-09-05 17:57:10

标签: sql sql-server sql-server-2008

我有一个Marks表,其中包含学生姓名和标记。我想把所有得到相同分数的学生分组。我也想写下他们得到的标记,如下所示。

样本表是

╔═════════════════════╗
║ StudentName   Marks ║
╠═════════════════════╣
║ A             90    ║
║ B             70    ║
║ C             80    ║
║ D             90    ║
║ E             70    ║
║ F             90    ║
║ G             80    ║
║ H             60    ║
╚═════════════════════╝

我正在寻找的输出是:

╔═══════════════════════╗
║ NoOfStudents    Marks ║
╠═══════════════════════╣
║ 3               90    ║
║ 2               80    ║
║ 2               70    ║
║ 1               60    ║
╚═══════════════════════╝

2 个答案:

答案 0 :(得分:1)

如果您想获得没有任何汇总的学生列表,则需要使用order by子句。请看下面的例子:

select * from studentsAndMarks order by marks

如果您想获得计数,请使用以下声明:

select count(StudentName),Marks from studentsAndMarks group by Marks 

答案 1 :(得分:0)

这只是基本的聚合。使用聚合函数count(),如下所示:

select count(StudentName) as NoOfStudents, marks
from tablename
group by marks
order by marks desc