文章目录
- 全部数据
- 示例1(说明)开窗函数可以比groupby多查出条件列外的字段,开窗函数主要是为了跟聚合函数一起使用,达到分组统计效果,并且开窗函数的结果集基本都是跟总行数一样
- 示例2
- 示例3
- 示例4
- 错误示例1
- 错误示例2
- 错误示例3
全部数据
select * from xin_student_t;
示例1(说明)开窗函数可以比groupby多查出条件列外的字段,开窗函数主要是为了跟聚合函数一起使用,达到分组统计效果,并且开窗函数的结果集基本都是跟总行数一样
over() 括号里面就是定义窗口的内容了,partition 是分区,分组的意思。partition by 就是根据某个字段分组。
所以sum(student_age) over(partition by relation_id) ,就是先根据 relation_id分组,当前面加了sum(student_age)后就把根据 relation_id 分组后的,每个(组)窗口里面的字段 student_age 进行求和操作
select relation_id, student_name, sum(student_age) over(partition by relation_id) sum开窗函数 from xin_student_t;
示例2
select relation_id, student_name, sum(student_age) over(partition by relation_id, student_name) sum开窗函数 from xin_student_t;
示例3
select relation_id, student_name, sum(student_age) over(partition by relation_id, student_name order by student_age) sum开窗函数 from xin_student_t;
示例4
select relation_id, student_name, first_value(student_age) over(partition by relation_id) sum开窗函数 from xin_student_t;