我有不同的等级,并使用他们排名相应调整至其刻度:根据使用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
我怎样才能做到这一点? 谢谢,
我认为这样做是创建一个表值参数来手动指定行列的最简单方法到HD(如此,2列),然后将该表加入到您的第一张表格“等级”栏中。我会试图写出来,但我不熟悉PostgreSQL语法。 – Sturgus