数据分析中常用的SQL语句

59次阅读

共计 479 个字符,预计需要花费 2 分钟才能阅读完成。

分组选择数据

问题:如何获得每个分组前 n 项结果?

场景:假设有一个表,记录了学生所有科目的成绩,那么现在要取出每个科目分数最高的 3 位同学的考试成绩。
表名为 student_grade
表中字段为:
course_id,course_name, student_id, student_name, grade

方法一:利用 row_number() 函数

select course_id,course_name, student_id, student_name, grade,
    row_number() over(partition by course_id order by grade desc) as rank
from student_grade
where rank <= 3

方法二:利用嵌套函数

select course_id,course_name, student_id, student_name, grade,
    (select count(*)from student_grade as t2
        where t1.grade<=t2.grade) as rank
from student_grade as t1
where rank <=3

正文完
 0