[英]How to get multiple values of a column based on max value of another column?
所以我有这张桌子
我想“打印”同一学期但其成绩最高不超过其学期最高成绩2分的人的姓氏。 例如,对于第4学期,所需的姓氏是“Παπαβασιλείου”(最高成绩= 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
结果是:
删除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
首先,您需要一个子查询来找出本学期的最高成绩,如下所示:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.