• 四大排序函数


    row_number() over(partition by clause order by filed asc|desc )----连续的从1开始到n的排序号
    [sql] view plain copy
    rank() over ( partition by clause order by filed asc|desc)---不连续的可以出现重复排序号
    [sql] view plain copy
    dense_rank() over (partition by clause order by filed asc|desc)--连续的可以出现重复排序号

    [sql] view plain copy
    ntile (integer_expression) over (partition by clause order by filed asc|desc )--连续的可以分组排序并且排序号是连续的
    [sql] view plain copy
    ----案例

    create table tb (
    [year] [int] NOT NULL,
    [week] [int] NOT NULL,
    [base_goods_id] [int] NOT NULL,
    [uid] [bigint] NOT NULL,
    [amount] [money] NOT NULL,
    [count] [int] NOT NULL,
    [bean] [money] NOT NULL
    )
    insert tb
    select 2013,2,6577,20087,32640.00,1088,26112.00
    union all
    select 2013,2,6577,20211,39420.00,1314,31536.00
    union all
    select 2013,2,6577,20220,60.00,2,111.00
    union all
    select 2013,2,6577,20457,60.00,2,48.00
    union all
    select 2013,2,6577,20458,60.00,2,48.00
    go
    select * from tb
    /*
    2013 2 6577 20087 32640.00 1088 26112.00
    2013 2 6577 20211 39420.00 1314 31536.00
    2013 2 6577 20220 60.00 2 111.00
    2013 2 6577 20457 60.00 2 48.00
    2013 2 6577 20458 60.00 2 48.00
    */

    select ROW_NUMBER() over(partition by base_goods_id order by count)rn,* from tb

    /*
    rn year week base_goods_id uid amount count bean
    1 2013 2 6577 20220 60.00 2 111.00
    2 2013 2 6577 20457 60.00 2 48.00
    3 2013 2 6577 20458 60.00 2 48.00
    4 2013 2 6577 20087 32640.00 1088 26112.00
    5 2013 2 6577 20211 39420.00 1314 31536.00
    */

    select dense_rank()over(partition by base_goods_id order by count )rn,* from tb
    /*
    rn year week base_goods_id uid amount count bean
    1 2013 2 6577 20220 60.00 2 111.00
    1 2013 2 6577 20457 60.00 2 48.00
    1 2013 2 6577 20458 60.00 2 48.00
    2 2013 2 6577 20087 32640.00 1088 26112.00
    3 2013 2 6577 20211 39420.00 1314 31536.00
    */

    select rank()over(partition by base_goods_id order by count )rn,* from tb

    /*
    1 2013 2 6577 20220 60.00 2 111.00
    1 2013 2 6577 20457 60.00 2 48.00
    1 2013 2 6577 20458 60.00 2 48.00
    4 2013 2 6577 20087 32640.00 1088 26112.00
    5 2013 2 6577 20211 39420.00 1314 31536.00
    */

    select ntile(2)over(partition by base_goods_id order by count )rn,* from tb

    /*
    rn year week base_goods_id uid amount count bean
    1 2013 2 6577 20220 60.00 2 111.00
    1 2013 2 6577 20457 60.00 2 48.00
    1 2013 2 6577 20458 60.00 2 48.00
    2 2013 2 6577 20087 32640.00 1088 26112.00
    2 2013 2 6577 20211 39420.00 1314 31536.00
    */

  • 相关阅读:
    页面滚屏截图工具推荐
    java总结第二次(剩余内容)//类和对象1
    happy birthday to tbdd tomorrow
    数组增删改查及冒泡
    三个循环方面程序
    三个入门小程序
    java总结第二次//数组及面向对象
    Java总结第一次//有些图片未显示,文章包含基础java语言及各种语句
    后台验证url是不是有效的链接
    img 鼠标滑上后图片放大,滑下后图片复原
  • 原文地址:https://www.cnblogs.com/accumulater/p/6158581.html
Copyright © 2020-2023  润新知