您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Postgresql中,如何按列选择前n%的行?

在Postgresql中,如何按列选择前n%的行?

我将使用一个查询

select student_id, student_name, avg_grade, rank() over (order by avg_grade desc)
from (select s.student_id,
             s.student_name,
             avg(ce.grade)                                        as avg_grade,
             rank() over (order by avg(ce.grade) desc nulls last) as seqnum,
             count(*) over ()                                     as cnt
      from students s
             left join
           course_enrollment ce
           on s.student_id = ce.student_id
      group by s.student_id
     ) as ce_avg
where seqnum <= cnt * 0.1;

您还可以使用其他窗口功能,例如NTILE()percentile_DISC()。我更喜欢直接计算,因为它可以更好地控制联系的处理方式。

SQLServer 2022/1/1 18:53:18 有378人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶