美文网首页Oracleoracle的基本sql介绍
sql(oracle)数据处理实用总结开窗函数(over par

sql(oracle)数据处理实用总结开窗函数(over par

作者: enjoy_muming | 来源:发表于2018-06-05 17:14 被阅读18次

    1.开窗函数over partition

    开窗函数使用

        开窗函数使用于取出多列分组,取一列分组下另一组前几名,先利用开窗函数对其分组排名,开窗函数排名函数较多使用row_number(),还有rank()等,生成排名列之后将结果集筛选其排名前几<=2或者你想要的前几名。

    上述例子sql:

    select test_name,test_id,n_rank,test_salary_sum from ( select t_alias.test_name,t_alias.test_id, sum(t_alias.test_salary) test_salary_sum, row_number() over(partition by t_alias.test_name order by sum(t_alias.test_salary) desc) n_rank from (select 1 test_id, 'name_1' test_name, 100 test_salary from dual union all select 2 test_id, 'name_1' test_name, 200 test_salary from dual union all select 2 test_id, 'name_1' test_name, 300 test_salary from dual union all select 3 test_id, 'name_1' test_name, 300 test_salary from dual union all select 4 test_id, 'name_1' test_name, 400 test_salary from dual union all select 1 test_id, 'name_2' test_name, 200 test_salary from dual union all select 2 test_id, 'name_2' test_name, 200 test_salary from dual union all select 2 test_id, 'name_2' test_name, 200 test_salary from dual union all select 3 test_id, 'name_2' test_name, 400 test_salary from dual union all select 4 test_id, 'name_2' test_name, 400 test_salary from dual) t_alias group by t_alias.test_name,t_alias.test_id) where n_rank<=2 order by test_name,n_rank;

    上述执行结果:

    开窗函数实例执行结果

        获得每个test_name字段下test_id的test_salary的前2名。

    开窗函数实例:

    开船函数实例

    另有开窗函数替代写法,可以了解:

    开窗函数替代写法

    相关文章

      网友评论

      本文标题:sql(oracle)数据处理实用总结开窗函数(over par

      本文链接:https://www.haomeiwen.com/subject/wdveqftx.html