分析函数(窗口函数)

一、什么是分析函数: 分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。

     基本语法:<窗口函数> over (partition by <用于分组的列名>

                                                         order by <用于排序的列名>)

二、窗口函数:

      1.专用窗口函数:rank、dense_rank、row_number等,使用专用窗口函数,函数后面的()里不需任何参数,空着就行;

      2.聚合函数:sum、avg、count、max、min等

      3.rank、dense_rank和row_number区别 

                     例 :select *,rank() over (order by 成绩 desc)as ranking,

                                              dense_rank() over (order by 成绩 desc) as dese_rank,

                                             row_number() over (order by 成绩 desc) as row_num

                             from 班级表

           

 

    4.聚合函数作为窗口函数

        例       select *,

                            sum(成绩) over (order by 学号) as current_sum,
                            avg(成绩) over (order by 学号) as current_avg,
                            count(成绩) over (order by 学号) as current_count,
                            max(成绩) over (order by 学号) as current_max,
                            min(成绩) over (order by 学号) as current_min
                     from 班级表

                   

 

 

三、group by 与窗口函数都具有分组功能。有什么不同?

        答: group by 分组汇总后改变了表的行数,一行只有一个类别;而partition by 和rank函数不会减少原表的行数

四、窗口函数功能:1.同时具有分组和排序的功能;

                                 2. 不减少原表的行数

 

posted @ 2023-09-27 17:07  醉不在意  阅读(130)  评论(0)    收藏  举报