我就以我最近遇到的avg开窗函数为例:
1.avg函数传统数据库就是求平均数,有次在工作中遇到了需要求平均数,自然而然就想到了avg这个函数,用的是开窗函数的avg(字段) over(partiontion by 字段2 order by 字段3),但我遇到了什么问题呢,就是没理解开窗的avg,求出来的平均数不是我想要的那种。假设有三条数据,分数依次是 1,2,3,按我的理解是最终结果应该都是2,2,2,可实际上是,1,1.5,2。原因就在于order by 这里,如果你去掉order by就是我想要的结果,如果加上order by ,
(1)第一条数据分数:它就是第一条数据的平均分,1
(2)第二条数据分数:第二条数据和第一条数据到平均数,(1+2)/2
(3)第三条数据分数:就是第一条和第二条和第三条的平均数 (1+2+3)/3
我查过资料,很多人描述的也对,但就是这个细节没抠出来,让我第一次也差点栽了,类似的sum,mix,max等开窗函数跟我上述讲的也一样的道理,今天才彻底理解了这个开窗函数