代码杂谈-SQL中的rank&row_number函数

两个函数细节记不住. 写个例子备注一下.

 select
no, name, score
, rank() over(partition by no order by score asc) rk1
, rank() over(partition by no order by score desc) rk2
, row_number() over(partition by no order by score asc) rn1
, row_number() over(partition by no order by score desc) rn2

from  values
 (1,'a',1), (1,'a', null),
 (1, 'b',2), (1, 'b',-2), (1, 'b',1)
 t (no, name, score)
;

结果

no name score rk1 rk2 rn1 rn2
1 b 2 5 1 5 1
1 a 1 3 2 3 2
1 b 1 3 2 4 3
1 b -2 2 4 2 4
1 a \N 1 5 1 5

原文地址:https://www.cnblogs.com/bregman/p/12106094.html

时间: 2024-12-29 11:15:13

代码杂谈-SQL中的rank&row_number函数的相关文章

SQL中的单记录函数

SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制数;SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A         A      ZERO     SPACE--------- --------- --------- ---------       65        97        48        32 2.CHR给出整数,返回对应的字符;SQL> s

SQL中Round(),Floor(),Ceiling()函数的浅析

项目中的一个功能模块上用到了标量值函数,函数中又有ceiling()函数的用法,自己找了一些资料,对SQL中这几个函数做一个简单的记录,方便自己学习.有不足之处欢迎拍砖补充 1.round()函数遵循四舍五入原则,用于把数值字段舍入为指定的小数位数 2.floor(value)函数返回小于或等于指定值(value)的最小整数 3.ceiling(value)函数返回大于或等于指定值(value)的最小整数 例如:对于12.9,floor(12.9)返回12:ceiling(12.9)返回13:r

sql 优化 -- sql中的自定函数

Long run sql: MERGE INTO INTITMRTNPARAM D USING ( SELECT A.INRFILENM,A.INRSTAT,A.INRDEPCD,A.INRITMCD,A.INRSUBCD,A.INRSUPCD,A.INRSTOCD FROM INTITMRTNPARAM A,INTITMRTNPARAM B WHERE 1=1 AND A.ROWID <> B.ROWID AND A.INRFILENM = B.INRFILENM AND A.INRSTAT

SQL中存储过程与自定义函数的区别

存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程. 优点 ①重复使用.存储过程可以重复使用,从而可以减少数据库开发人员的工作量. ②提高性能.存储过程在创建的时候在进行了编译,将来使用的时候不再重新翻译.一般的SQL语句每

SQL中存储过程和自定义函数的区别(转载)

存储过程:     存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理.存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量.有条件执行以及其它强大的编程功能.存储过程可包含程序流.逻辑以及对数据库的查询.它们可以接受参数.输出参数.返回单个或多个结果集以及返回值. 可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点: 1.可以在单个存储过程中执

SQL中存储过程和自定义函数的区别

存储过程:     存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理.存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量.有条件执行以及其它强大的编程功能.存储过程可包含程序流.逻辑以及对数据库的查询.它们可以接受参数.输出参数.返回单个或多个结果集以及返回值. 可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点: 1.可以在单个存储过程中执

sql中limit和汇总函数的集合使用

limit和求和一起 select SUM(A.high) from (select * from minute1_K order by DateTime desc limit 10) A limit和avg一起 select avg(A.AskVolume1) from (select * from DepthMarketData order by UpdateTime DESC limit 300) A limit和max一起 select max(A.AskVolume1) from (s

面试问题 - SQL 中存储过程与函数的区别

SQL 中的存储过程与函数没有本质上的区别 函数 -> 只能返回一个变量. 函数可以嵌入到sql中使用, 可以在select 中调用, 而存储过程不行.  但函数也有着更多的限制,比如不能使用临时表 存储过程 -> 可以返回多个变量. 存储过程的定义如下: 存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理.存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量

SQL 中的常用函数及使用

在SQL中我们使用的函数有很多,我们经常使用的就是下面的一些函数,那么我一一列举数来: 1:聚合函数:MAX 返回指定数据的最大值. MIN 返回指定数据的最小值. COUNT 返回指定组中项目的数量. AVG 返回指定组中的平均值,空值被忽略. SUM 返回指定数据的和,只能用于数字列,空值被忽略. 2:数学函数:ceiling 取上限floor 取下限 qound 四舍五入abs 取绝对值pi 圆周率 SQRT - 开根号SQUARE - 平方根 3:字符串函数:UPPER 将字符串中的小写