sql rank()函数

RANK() OVER([<partiton_by_clause>])

  partition_by_clause 将from子句生成的结果集划分为应用到RANK函数的分区。 
  Order_by_clause确定将RANK值应用到分区中的行时所使用的顺序。

 以下用一个成绩表作示例
  table 架构
  s_score(s_class(班级),s_id(学号),s_score(分数))
  SQL statement1:
  Select rank() over(order by s_score desc) as 名次,s_class,s_id,s_score from s_score
  结果集如下
  名次 s_class s_id s_score
  1 二班 S20090733 100
  2 一班 S20090635 99
  3 三班 S20090919 97
  4 一班 S20090846 96
  5 一班 S20090825 95
  6 二班 S20090715 94
  7 三班 S20090836 91
  8 二班 S20090631 86
  SQL statement2:
  Select rank() over(partition by s_class order by s_score desc) as 名次,s_class,s_id,s_score from s_score
  结果集如下
  名次 s_class s_id s_score
  1 三班 S20090919 97
  2 三班 S20090836 91
  1 二班 S20090733 100
  2 二班 S20090715 94
  3 二班 S20090631 86
  1 一班 S20090635 99
  2 一班 S20090846 96
  3 一班 S20090825 95

SQL2005四个排名函数(row_number、rank、dense_rank和ntile)的比较

排名函数是SQL Server2005新加的功能。在SQL Server2005中有如下四个排名函数:

  1.row_number

  2.rank

  3.dense_rank

  4.ntile  

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

详解:http://www.cnblogs.com/xhyang110/archive/2009/10/27/1590448.html

时间: 2024-10-09 23:03:48

sql rank()函数的相关文章

SQL Server2008函数大全(完整版)

SQL2008 表达式:是常量.变量.列或函数等与运算符的任意组合. 1. 字符串函数 函数 名称 参数 示例 说明 ascii(字符串表达式) select ascii('abc') 返回 97 返回字符串中最左侧的字符的ASCII 码. char(整数表达式) select char(100) 返回 d 把ASCII 码转换为字符. 介于0 和 255 之间的整数.如果该整数表达式不在此范围内,将返回 NULL 值. charindex(字符串表达式 1, 字符串表达式2[,整数表达式])

SQL常用函数集锦

一.字符转换函数1.ASCII()返回字符表达式最左端字符的ASCII 码值.在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错. 2.CHAR()将ASCII 码转换为字符.如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL . 3.LOWER()和UPPER()LOWER()将字符串全部转为小写:UPPER()将字符串全部转为大写. 4.STR()把数值型数据转换为字符型数据.STR (<float_exp

php和mysql仿excel的rank函数

php仿excel的rank函数也是借鉴网上的代码,但是没有二维数组情况下的进行rank排名,所以自己对代码稍微改了一下,可以直接运行试验. <?php $arr = array(           array('s'=>'99','r'=>'1','a'=>'a'),           array('s'=>'99','r'=>'1','b'=>'b'),           array('s'=>'100','r'=>'2','c'=>'

oracle 分组中排序(rank函数)

需求: 查询每个供应商在每个类型产品销售的top50中有多少 分析: 1.查询,以指定字段(供应商.产品类型)分组,取每个分组的前50行,查看每个供应商的数量 2.使用rank函数给每个供应商.每个类型产品的销售量做个排名,添加伪劣ran 3.筛选ran小于等于50的行,以供应商.产品类型分组,count sql: select gyscode 供应商编码, typeid 类型id, count(1) num from (select t.gyscode, t.typeid, sum(t.sal

SQL Server2008函数

SQL2008 表达式:是常量.变量.列或函数等与运算符的任意组合. 1. 字符串函数 函数 名称 参数 示例 说明 ascii(字符串表达式) select ascii('abc') 返回 97 返回字符串中最左侧的字符的ASCII 码. char(整数表达式) select char(100) 返回 d 把ASCII 码转换为字符. 介于0 和 255 之间的整数.如果该整数表达式不在此范围内,将返回 NULL 值. charindex(字符串表达式 1, 字符串表达式2[,整数表达式])

oracle rank()函数总结

首先,要了解rank在英语的意思:等级.也就是说这是一个给数据确定等级的函数. 以销售为例,有地区,年,月,销售员,销售额,记录这五个字段.我们可以按地区,年,月,销售额对销售员进行排序,这样对销售员来说就相当于有一个等级概念了,第一名就是销售最高的......,如果我们要找出每个地区,年,月,销售额的前三名销售员.SQL如何写? java 代码 SELECT area_code, YEAR, MONTH, saleroom,saler RANK () OVER (PARTITION BY ar

R语言rank函数详细解析

1.rank函数是什么 rank相关文档[1]可以译为"返回原数组(?)中各个元素排序(?)后的秩次(?)",表面上看确实可以得到次序,但对数组.排序.秩次交待不清. 2.rank函数使用情景 比如,在100米赛跑中,甲乙丙三人的成绩为6.8s, 8.1s, 7.2s,那么用rank函数排序获得名次: > rank(t <- c(6.8, 8.1, 7.2)) [1] 1 3 2 再如,甲乙丙三人考试得分为74,92,85,用同样方法取得名次会适得其反.当然,我们可以认为执

ORACLE PL/SQL 字符串函数、数学函数、日期函数

ORACLE PL/SQL 字符串函数.数学函数.日期函数 --[字符串函数] --字符串截取substr(字段名,起始点,个数) select Name,substr(Name,2,4),substr(Name,0,3),substr(Name,-2,3),substr(Name,-2,1) from t1; --字符串从前面取三个(0开始) select Name,substr(Name,0,3) from t1; --字符串从后面取三个 select Name,substr(Name,-3

SQL Server函数大全

SQL Server函数大全 SQL Server中的函数对于提高查询的工作效率起到了非常突出的作用.善于在查询工作或开发工作中利用好SQL函数,将对工作有很大的帮助,同时也会大大提升工作的效率.但是由于SQL函数种类众多.所以在使用的时候往往会无法全部理解它们的含义和用法.下面将详细对SQL函数的含义和使用方法做一个比较系统的介绍: 在实际工作中,select语句中只能使用SQL函数对字段进行操作,常见的函数可以分为以下几大类: 1.字符转换函数 1)ASCII() 返回字符表达式最左端字符的