학생 ID와 평점이 포함 된 표가 있습니다.PostgreSQL에서 다른 표를 하나 빼기
_____________
| sID | GPA |
-------------
| 1 | 3.7 |
| 2 | 3.9 |
| 3 | 3.6 |
| 4 | 3.7 |
| 5 | 3.1 |
| 6 | 3.9 |
최고 또는 두 번째로 높은 평점을받은 학생 만 제공하는 테이블을 만들고 싶습니다. 즉, 나는이 결과 원하는 :
SELECT *
FROM gpaTable
WHERE gpa in (
SELECT max(gpa) FROM gpaTable)
이 저를 제공합니다
_____________
| sID | GPA |
-------------
| 2 | 3.9 |
| 6 | 3.9 |
| 1 | 3.7 |
| 4 | 3.7 |
그렇게하기를, 나는 나에게 가장 높은 점수를 일치하는 모든 학생을 제공하는 쿼리를 작성하여 시작 :
| sID | GPA |
-------------
| 2 | 3.9 |
| 6 | 3.9 |
내가 빼기 전체 원래 타에서이 결과에 원하는뿐만 아니라 두 번째로 높은를 얻으려면 ble를 찾은 다음 max를 다시 찾는 쿼리를 반복하십시오.
나는 다음과 같이 보일 것이라고 가정합니다. 그러나 나는 제대로 이해하지 못합니다. 영어
SELECT *
FROM gpaTable
WHERE gpa IN (
SELECT *
FROM gpaTable
WHERE gpa in (
SELECT max(gpa) FROM gpaTable)
)
OR
(SELECT *
FROM gpaTable
WHERE NOT EXISTS IN
(SELECT *
FROM gpaTable
WHERE gpa in (
SELECT max(gpa) FROM gpaTable)
)
는 쿼리가 나에게 최대 GPA들 적은 GPA들의 최대 GPA들의 테이블에또는의 테이블에 표시되는 모든 행을 지정 (또는라고한다)라고
정말 도움을 주시면 고맙겠습니다.
나는 귀하의 답변을 약간 편집했습니다. 내가 원하는 방식대로 작동하게하십시오. 좋은 제안! – CodyBugstein