sql - 如何选择 TOP 5 但排除一些结果 (SQL Server)

标签 sql sql-server database

所以我有这个代码..

SELECT TOP 5 Student_ID,
CASE
    WHEN SUM(Grade)/5 >= 96.5 THEN '4.0'
    WHEN SUM(Grade)/5 > 92.4 THEN '3.5'
    WHEN SUM(Grade)/5 > 88.4 THEN '3.0'
    WHEN SUM(Grade)/5 > 84.4 THEN '2.5'
    WHEN SUM(Grade)/5 > 79.4 THEN '2.0'
    WHEN SUM(Grade)/5 > 74.4 THEN '1.5'
    WHEN SUM(Grade)/5 > 69.4 THEN '1.0'
    WHEN SUM(Grade)/5 < 69.5 THEN 'R'
ELSE ''
END AS 'GPA'
FROM Grades
GROUP BY Student_ID
ORDER BY GPA DESC

这是结果:

Student_ID | GPA   
 200128       R
 200122      3.5
 200126      3.5
 200120      3.0
 200125      3.0

在进入前 5 名时,如何排除 GPA 为“R”的学生?

最佳答案

更改顺序:

ORDER BY (case when GPA = 'R' then 2 else 1 end),
         GPA DESC

你还可以这样做:

ORDER BY SUM(Grade)/5 DESC

这有细微的不同,因为第一种方法会将所有具有相同“GPA”的学生视为平等。这将按数值对它们进行排序(在幕后)。

关于sql - 如何选择 TOP 5 但排除一些结果 (SQL Server),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29717369/

相关文章:

sql - 在以下查询中我需要什么类型的 mysql 连接

c# - 数据不会永久保存到 SQL 表中

sql - 是什么导致了这些看似不一致的查询结果?

c# - 从 SQL Server 读取十进制值时出现溢出异常

java - 以原子方式运行两个操作

database - 实体关系图。 IS A 关系如何转化为表?

SQL 服务器 : check for existing entry before UPDATE

sql - While 循环从 select 语句插入

c++ - 无法使用 SQL Server VSS Writer 进行差异备份

c# - Entity Framework 迁移错误