計算名次
Grade_table
| SUBJECT | STUDENT_ID | GRADE |
| Chemistry | 1 | 60 |
| Chemistry | 2 | 65 |
| Mathematics | 1 | 80 |
| Mathematics | 2 | 85 |
| Mathematics | 3 | 90 |
| Mathematics | 4 | 95 |
| Mathematics | 5 | 100 |
| Physics | 1 | 85 |
| Physics | 2 | 90 |
| Geography | 1 | 95 |
方法一:
(Select SUBJECT, STUDENT_ID, GRADE, ROWNUM as RN From
(Select SUBJECT,STUDENT_ID, GRADE From Grade_table
Where SUBJECT = ‘Mathematics’
Order by GRADE Desc
)
Where ROWNUM < 4 --取前三名
Order by GRADE Desc
)
Where RN = 3 --只列第三名
Result
|
SUBJECT |
STUDENT_ID |
GRADE |
RN |
|
Mathematics |
3 |
90 |
3 |
方法二:
(Select SUBJECT, STUDENT_ID, GRADE,
RANK() OVER(PARTITION BY SUBJECT Order by GRADE Desc) as RANK
From Grade_table
Where SUBJECT = ‘Mathematics’
)
Where RANK < 4 --列出前三名
Result
|
SUBJECT |
STUDENT_ID |
GRADE |
RN |
|
Mathematics |
5 |
100 |
1 |
|
Mathematics |
4 |
95 |
2 |
|
Mathematics |
3 |
90 |
3 |
Row_number, Rank 與 Dense_rank 差別
, RANK() OVER(ORDER BY grade DESC) RANK
, DENSE_RANK() OVER(ORDER BY grade DESC) DENSE_RANK
, STUDENT_ID
, SUBJECT
, GRADE
FROM GRADE_TABLE;Result
|
ROW_NUM |
RANK |
DENSE_RANK |
STUDENT_ID |
SUBJECT |
GRADE |
|
1 |
1 |
1 |
5 |
Mathematics |
100 |
|
2 |
2 |
2 |
1 |
Geography |
95 |
|
3 |
2 |
2 |
4 |
Mathematics |
95 |
|
4 |
4 |
3 |
3 |
Mathematics |
90 |
|
5 |
4 |
3 |
2 |
Physics |
90 |
|
6 |
6 |
4 |
2 |
Mathematics |
85 |
|
7 |
6 |
4 |
1 |
Physics |
85 |
|
8 |
8 |
5 |
1 |
Mathematics |
80 |
|
9 |
9 |
6 |
2 |
Chemistry |
65 |
|
10 |
10 |
7 |
1 |
Chemistry |
60 |
SELECT ROW_NUMBER() OVER(PARTITION BY SUBJECT ORDER BY grade DESC) ROW_NUM
, RANK() OVER(PARTITION BY SUBJECT ORDER BY grade DESC) RANK
, DENSE_RANK() OVER(PARTITION BY SUBJECT ORDER BY grade DESC) DENSE_RANK
, STUDENT_ID
, SUBJECT
, GRADE
FROM GRADE_TABLE;Result
|
ROW_NUM |
RANK |
DENSE_RANK |
STUDENT_ID |
SUBJECT |
GRADE |
|
1 |
1 |
1 |
5 |
Mathematics |
100 |
|
2 |
2 |
2 |
1 |
Geography |
95 |
|
3 |
2 |
2 |
4 |
Mathematics |
95 |
|
4 |
4 |
3 |
3 |
Mathematics |
90 |
|
5 |
4 |
3 |
2 |
Physics |
90 |
|
6 |
6 |
4 |
2 |
Mathematics |
85 |
|
7 |
6 |
4 |
1 |
Physics |
85 |
|
8 |
8 |
5 |
1 |
Mathematics |
80 |
|
9 |
9 |
6 |
2 |
Chemistry |
65 |
|
10 |
10 |
7 |
1 |
Chemistry |
60 |