所以我有这张桌子
我想“打印”那些在同一学期的人的姓氏,但他们的分数最多比他们学期的最高分低2分。例如,在第四学期中,所需的姓氏是"Παπαβασιλείου“(最高年级= 9)和"Βαλκανιώτης”(年级=7Βαλκανιώτης(9-2))。
我所做的是这段代码,但它不符合我的标准
SELECT GRADE as GRADE, SURNAME FROM pinakas2
WHERE GRADE >= ((SELECT MAX(GRADE) FROM pinakas2) - 2)
GROUP BY SEMESTER ORDER BY GRADE DESC
其结果是:
发布于 2015-07-02 13:51:41
删除GROUP BY
,改为执行ORDER BY semester
:
SELECT GRADE as GRADE, SURNAME
FROM pinakas2
WHERE GRADE >= ((SELECT MAX(GRADE) FROM pinakas2) - 2)
ORDER BY SEMESTER, GRADE DESC
如果您希望每个学期的最高分数减去2,则执行相关的子查询:
SELECT GRADE as GRADE, SURNAME
FROM pinakas2 p1
WHERE GRADE >= ((SELECT MAX(GRADE) FROM pinakas2 p2
where p1.semester = p2.semester) - 2)
ORDER BY SEMESTER, GRADE DESC
发布于 2015-07-02 13:57:12
首先,您需要一个子查询来查找本学期的最高成绩,如下所示:
SELECT MAX(GRADE) GRADE, SEMESTER
FROM pinakas2
GROUP BY SEMESTER
然后你需要用它来检索你想要的学生:
SELECT a.GRADE, a.SURNAME, a.SEMESTER
FROM pinakas2 a
JOIN (
SELECT MAX(GRADE) GRADE, SEMESTER
FROM pinakas2
GROUP BY SEMESTER
) b ON a.SEMESTER = b.SEMESTER AND a.GRADE >= b.GRADE - 2
ORDER BY a.SURNAME, a.GRADE
如果出于某种原因,你不关心发生这种情况的学期,那就选择这样做。
SELECT DISTINCT a.GRADE, a.SURNAME
FROM pinakas2 a
JOIN (
SELECT MAX(GRADE) GRADE, SEMESTER
FROM pinakas2
GROUP BY SEMESTER
) b ON a.SEMESTER = b.SEMESTER AND a.GRADE >= b.GRADE - 2
ORDER BY a.SURNAME, a.GRADE
https://stackoverflow.com/questions/31186405
复制相似问题