SQL面试经典问题-开窗函数

yumo6666个月前 (03-30)技术文章35
  • 分组取每组最大值

  • 案例:按课程号分组取成绩最大值所在行的数据

    select 
        学号,
        课程号,
        max(成绩) as 最高分,   
    from a
    group by 课程号


  • 分组取每组最小值
  • 案例:按课程号分组取成绩最小值所在行的数据(意思是每个课程最小值的学生信息都要出来)

    关联子查询

    select * from score a
    where 成绩=(
    select min(成绩) from score b
    where b.课程号=a.课程号
    )


    查询各科成绩前两名的记录(topN),一定要嵌套一层,不能直接取,因为where比select先执行

    select *
    from (select 
                *,
                dense_rank() over (partition by ID  order by score desc) as 排名
           from
           score)t
    where t.排名<=2


    查找单科成绩高于该科目平均成绩的学生名单

    第一种解法

    select 姓名
    from 
        成绩表
        left join 
        (select 科目,
            avg(score) as 平均成绩
         from 成绩表
        group by 科目)t
    where 成绩表.成绩>t. 平均成绩

    第二种解法

    select * from (
    select *,
    avg(成绩) over (
    PARTITION by 课程号) as 平均成绩
    from score)as a
    where 成绩>平均成绩

    相关文章

    200场面试总结出的大厂SQL常考题(附答案)

    小伙伴们,大家好。今天给大家分享一些在数据分析岗位面试中,常被问到的一些SQL题。首先,大家先思考一下题目,然后再看后面的参考答案。Q1:几种JOIN连接方式的区别?Q2:几种排序窗口函数的区别?Q3...

    大厂面试SQL题(三) ——连续登陆(含间隔)(字节)

    承继上篇文章 大厂面试SQL题(一) ——连续登陆,阐述了最为简易的连续登录题目。然而,倘若在面试题目中增添难度,将 隔天统计问题 纳入考量,该作何处理呢?沿用第一篇题目的场景实例:(1)存在一张用户...

    这些MySQL面试题集锦,据说知名互联网公司都用

    1、一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 ?  2、MySQL的技术特点...

    MySQL经典面试题 14 道

    面试中经常被问到的 MySQL 题目,本文总结了面试中的经典问题。1.主键(primary key)和候选键(candidate key)有什么区别?候选键 - 候选键可以是任何列或可以作为数据库中唯...

    每天一篇Java面试之MySQL热门面试答案汇总

    面试官:MySQL中,如何定位慢查询?候选人:嗯~,我们当时做压测的时候有的接口非常的慢,接口的响应时间超过了2秒以上,因为我们当时的系统部署了运维的监控系统Skywalking ,在展示的报表中可以...