SQL over(partition by order by)函数题目汇总

一、SQL.
(1)有一张user_score表,包含每个人的三科成绩,数据样例如下:
Name subject score
张三 语文 82
张三 数学 90
张三 外语 75
李四 语文 58
………
1)请写出一段SQL,统计出每个人所有学科中的最高分数
2)请写出一段SQL,统计每个人分数最高的两门学科"
1.

select
    name,
    subject,
    score
from
    (
        select
            *,
            rownumber() over (
                partition by subject
                order by
                    score desc
            ) rno
        from
            a
    )b
where
    b.rno = 1
group by
    name,
    subject,
    score
select
    name,
    subject,
    score
from
    (
        select
            *,
            rownumber() over (
                partition by name
                order by
                    score desc
            ) rno
        from
            a
    )b
where
    b.rno in (1,2)
group by
    name,
    subject,
    score
 

附链接:
SQL OVER() Partition By Order By
https://blog.csdn.net/u012664198/article/details/82225340

你可能感兴趣的:(SQL)