Iグレードの異なる種類をしましたし、使用して自分のマークに応じてそれらをランクSQL /ランクを使用して、テーブル内の文字/ DENSE_RANK()に応じてランキング
select id,subject,semester,student,course,mark,grade
,dense_rank() over(PARTITION by course order by mark desc) as RANK
from courses c
LEFT JOIN course_enrolments b ON c.id=b.course;
を、結果は次のとおりです。
id subject semester student course mark grade rank
5270 1001 126 1077055 5270 99 HD 1
5270 1001 126 1076079 5270 98 HD 2
5270 1001 126 1077334 5270 85 HD 3
5270 1001 126 1076920 5270 84 DN 4
5270 1001 126 1077443 5270 84 DN 5
5270 1001 126 1072135 5270 67 CR 6
5270 1001 126 1079997 5270 66 CR 7
5270 1001 126 1071034 5270 62 PS 8
5270 1001 126 1079993 5270 62 PS 9
5270 1001 126 1074070 5270 44 FL 10
5270 1001 126 1078409 5270 30 FL 11
5270 1001 126 1073006 5270 28 FL 12
しかし、私は何を達成しようとしていることは彼らのマーク応じてその学年に応じてこれらの人々をランク付けしていない:
をだから私は何を達成しようとしていることは、このようなものです:
id subject semester student course mark grade rank
5270 1001 126 1077055 5270 99 HD 1
5270 1001 126 1076079 5270 98 HD 1
5270 1001 126 1077334 5270 85 HD 1
5270 1001 126 1076920 5270 84 DN 2
5270 1001 126 1077443 5270 84 DN 2
5270 1001 126 1072135 5270 67 CR 3
5270 1001 126 1079997 5270 66 CR 3
5270 1001 126 1071034 5270 62 PS 4
5270 1001 126 1079993 5270 62 PS 4
5270 1001 126 1074070 5270 44 FL 5
5270 1001 126 1078409 5270 30 FL 5
5270 1001 126 1073006 5270 28 FL 5
がどのように私はこれを実現することができますか? ありがとう、
をHDs(2列)に追加し、そのテーブルを「グレード」フィールドの最初のテーブルに追加するだけです。私はそれを書こうとしますが、私はPostgreSQLの構文に慣れていません。 – Sturgus