我有以下代码.
SQL> select * from student_gpa; SSN GPA --------------- ---------- 22222 3 11111 4 55555 3 33333 4 44444 3
我确实有这个功能来获得前两个gpa得分行.
SQL> select * from(从gpa desc中选择student_gpa的ssn,gpa),其中rownum< = 2;
SSN GPA --------------- ---------- 11111 4 33333 4
我的问题是我用什么功能来获得GPA得分的前n%.例如,由于我有两个人的GPA为4,密集等级将返回11111占据第1行,22222占据第2行.我实际上正在寻找一个函数说计算5%的GPA分数,返回的值将是11111和22222. 5%函数不应该仅返回11111.即使我有更多的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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。