oracle – 前n%名列前n%
发布时间:2020-12-12 13:50:43 所属栏目:百科 来源:网络整理
导读:我有以下代码. SQL select * from student_gpa; SSN GPA --------------- ---------- 22222 3 22222 4 55555 3 33333 4 44444 3 我确实有这个功能来获得前两个gpa得分行. SQL select * from(从gpa desc中选择student_gpa的ssn,gpa),其中rownum = 2; SSN GPA
我有以下代码.
SQL> select * from student_gpa; SSN GPA --------------- ---------- 22222 3 22222 4 55555 3 33333 4 44444 3 我确实有这个功能来获得前两个gpa得分行. SQL> select * from(从gpa desc中选择student_gpa的ssn,gpa),其中rownum< = 2; SSN GPA --------------- ---------- 22222 4 33333 4 我的问题是我用什么功能来获得GPA得分的前n%.例如,由于我有两个人的GPA为4,密集等级将返回22222占据第1行,22222占据第2行.我实际上正在寻找一个函数说计算5%的GPA分数,返回的值将是22222和22222. 5%函数不应该仅返回22222.即使我有更多的gpa为4的条目,5%的函数仍会返回所有gpa为4的行.谢谢 你可以试试这个:WITH got_analytics AS ( SELECT ssn,gpa,ROW_NUMBER () OVER (ORDER BY gpa DESC) AS r_num,COUNT (*) OVER () AS n_rows FROM student_gpa ) SELECT ssn,gpa FROM got_analytics WHERE r_num <= ROUND (n_rows * 12/*insert here your n%*/ / 100) ORDER BY gpa DESC (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |