图丢了
用途:在窗口中每条记录动态地应用聚合函数(SUM()
、AVG()
、MAX()
、MIN()
、COUNT()
),可以动态计算在指定的窗口内的各种聚合函数值
作用:聚合函数作为窗口函数,是起到"累加/累计"的效果,比如,就是截止到本行,最大值?最小值是多少
与专用窗口函数的区别:括号中需要有指定列,不能为空
- 专用窗口函数---rank(),dense_rank(),row_number()(括号中没有参数,注意区分三者区别)
- 聚合函数---max(),min(),sum(),avg(),count() (括号中有参数)
案例
#查找单科成绩高于该科目平均成绩的学生名单
法一解题思路:
- 单科成绩,表示需要按科目进行分组,分组有两种:
group by
子句和窗口函数的partition by
; - 要求平均值,需要通过
avg()
实现,并且找到大于平均值的学生,那么不能减少行数,则用partition by
;
步骤:
聚合函数作为窗口函数
与平均值比较
注意 这里不能用where 成绩>分组平均值,因为where子句在select子句之后执行
??????????????????????
正确语句是套用子查询: