zoukankan      html  css  js  c++  java
  • SQL Server(00):排名函数

    一、概述

    SQL Server的排名函数是对查询的结果进行排名和分组,TSQL共有4个排名函数,分别是:RANK、NTILE、DENSE_RANK和ROW_NUMBER,和OVER()函数搭配使用,按照特定的顺序排名。

    ROW_NUMBER、DENSE_RANK、RANK、NTILE属于排名函数。排名开窗函数可以单独使用ORDER BY 语句,也可以和PARTITION BY同时使用。

    • PARTITION BY用于将结果集进行分组,开窗函数应用于每一组。
    • ODER BY 指定排名开窗函数的顺序。在排名开窗函数中必须使用ORDER BY语句。

    1、ROW_NUMBER:行号

    为每一组的行按顺序生成一个唯一的序号。序列从1开始,按照顺序依次 +1 递增。分组内序列的最大值就是该分组内的行的数目。

    ROW_NUMBER ( )OVER ( [ PARTITION_BY_clause ] order_by_clause )

    2、RANK:排名

    也为每一组的行生成一个序号,但如果按照ORDER BY的排序,如果有相同的值会生成相同的序号,并且接下来的序号是不连续的。例如,班级中,A,B分数都是100分,C的分数是90分,那么A和B的排名是1,C的排名是3

    3、DENSE_RANK:密集排名

    和RANK(排名)类似,不同的是如果有相同的序号,那么接下来的序号不会间断。例如,班级中,A,B分数都是100分,C的分数是90分,那么A和B的排名是1,C的排名是2

    4、NTILE :分组排名

    按照指定的数目将数据进行分组,并为每一组生成一个序号。

    特别地,NTILE(4) 把一个分组分成4份,叫做Quartile。例如,以下脚本显示各个排名函数的执行结果:

    select Department
        ,LastName
        ,Rate
        ,row_number() over(order by Rate) as [row number]
        ,rank() over(order by rate) as rate_rank
        ,dense_rank() over(order by rate) as rate_dense_rank
        ,ntile(4) over(order by rate) as quartile_by_rate
    from #data

  • 相关阅读:
    Nova官方资料入口处
    LeetCode 有效的数独
    LeetCode 两数之和
    LeetCode 移动零
    安装OpenStack Queens版本的教程推荐
    删除排序数组中的重复项
    (转载)OpenStack client 调用分析
    (转载)基于Linux C的socket抓包程序和Package分析
    Maven的具体使用和优点
    关于 Javascript 学习,有哪些好的博客或者网站推荐?
  • 原文地址:https://www.cnblogs.com/springsnow/p/9591083.html
Copyright © 2011-2022 走看看