我有一個包含學生ID和他們的GPA的表。在PostgreSQL中從另一個表中減去一個表
_____________
| sID | GPA |
-------------
| 1 | 3.7 |
| 2 | 3.9 |
| 3 | 3.6 |
| 4 | 3.7 |
| 5 | 3.1 |
| 6 | 3.9 |
我想創建一個表格,僅給出具有最高或第二高GPA的學生。換句話說,我想這樣的結果:
_____________
| sID | GPA |
-------------
| 2 | 3.9 |
| 6 | 3.9 |
| 1 | 3.7 |
| 4 | 3.7 |
要做到這一點,我開始通過編寫一個查詢,讓我所有誰得分最高的匹配學生:
SELECT *
FROM gpaTable
WHERE gpa in (
SELECT max(gpa) FROM gpaTable)
這給了我:
| sID | GPA |
-------------
| 2 | 3.9 |
| 6 | 3.9 |
爲了得到第二高的爲好,我想減這個結果從整個原始TA 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)
)
在英語中,詢問說(或應該說)給我出現在最大的GPAOR在較小的GPA的最大的GPA的表的表的每一行
我非常感謝任何幫助!
我編輯你的答案有點使其工作如何我想要的 - 它確實如此。好建議! – CodyBugstein