zoukankan      html  css  js  c++  java
  • SQL四个排名函数(row_number、rank、dense_rank和ntile)的使用

    一、row_number

      row_number函数的用途是非常广泛,这个函数的功能是为查询出来的每一行记录生成一个序号。row_number函数的用法如下面的SQL语句所示:

    select row_number() over(order by field1) as row_number,* fromt_table

    二、rank

      rank函数考虑到了over子句中排序字段值相同的情况,为了更容易说明问题,在t_table表中再加一条记录,

    select rank() over(order by field1),* from t_table order by field1

    三、dense_rank

      dense_rank函数的功能与rank函数类似,只是在生成序号时是连续的,而rank函数生成的序号有可能不连续。如上面的例子中如果使用dense_rank函数,第4条记录的序号应该是2,而不是4。如下面的SQL语句所示:

    select dense_rank() over(order by field1),* from t_table order by field1

    四、ntile

      ntile函数可以对序号进行分组处理。这就相当于将查询出来的记录集放到指定长度的数组中,每一个数组元素存放一定数量的记录。ntile函 数为每条记录生成的序号就是这条记录所有的数组元素的索引(从1开始)。也可以将每一个分配记录的数组元素称为“桶”。ntile函数有一个参数,用来指 定桶数。下面的SQL语句使用ntile函数对t_table表进行了装桶处理:

    select ntile(4) over(order by field1)as bucket,* from t_table

  • 相关阅读:
    ntp时钟同步
    io,进程监控
    Linux下修改主机名
    DataGuard主库增加联机日志
    external table
    linux卸载HBA卡驱动
    Oracle DataGuard延迟应用归档归档日志
    index unusable
    VBOX 克隆虚拟机
    device eth0 has different MAC address than expected,igoring
  • 原文地址:https://www.cnblogs.com/lampon/p/3244506.html
Copyright © 2011-2022 走看看