聚合函数作为窗口函数

用途:在窗口中每条记录动态地应用聚合函数(SUM()AVG()MAX()MIN()COUNT()),可以动态计算在指定的窗口内的各种聚合函数值

作用:聚合函数作为窗口函数,是起到"累加/累计"的效果,比如,就是截止到本行,最大值?最小值是多少

与专用窗口函数的区别:括号中需要有指定列,不能为空

  • 专用窗口函数---rank(),dense_rank(),row_number()(括号中没有参数,注意区分三者区别)
  • 聚合函数---max(),min(),sum(),avg(),count() (括号中有参数)

案例

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

法一解题思路:

  • 单科成绩,表示需要按科目进行分组,分组有两种:group by子句和窗口函数的partition by
  • 要求平均值,需要通过avg()实现,并且找到大于平均值的学生,那么不能减少行数,则用partition by

步骤:

  • 聚合函数作为窗口函数

    image-20200909224913551

  • 与平均值比较

    注意 这里不能用where 成绩>分组平均值,因为where子句在select子句之后执行

    ??????????????????????

    正确语句是套用子查询

    image-20200909225023904

Update time: 2020-09-09

results matching ""

    No results matching ""