zoukankan      html  css  js  c++  java
  • 四大排序函数

    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
    */

  • 相关阅读:
    位置匹配
    匹配重复
    使用元字符
    匹配一组字符
    匹配任意单个字符
    python-全局替换程序
    python37-encode与decode
    python37-能检测文件编码的模块
    super方法
    类-易错题
  • 原文地址:https://www.cnblogs.com/accumulater/p/6158581.html
Copyright © 2011-2022 走看看