SQLServer RANK() 排名函数的使用


Posted in SQL Server onMarch 23, 2022

本文主要介绍了SQLServer RANK() 排名函数的使用,具体如下:

-- 例子表数据
SELECT * FROM test;
-- 统计分数
SELECT name,SUM(achievement) achievement FROM test GROUP BY name; 
-- 按统计分数做排行
SELECT RANK() OVER( ORDER BY SUM(achievement) desc) 排行,name,SUM(achievement) achievement FROM test GROUP BY name;

SQLServer RANK() 排名函数的使用

求助问答存储过程使用:

USE [DB]
GO
 
/****** Object:  StoredProcedure [dbo].[sp_TodayJoinUser]    Script Date: 2021/1/26 14:45:24 ******/
SET ANSI_NULLS ON
GO
 
SET QUOTED_IDENTIFIER ON
GO
 
 
-- =============================================
-- Author:		_Hey_Jude
-- Create date: 2021-01-26
-- Description:	获取今日发表帮助/回复的新用户
-- =============================================
CREATE PROCEDURE [dbo].[sp_TodayJoinUser] 
	@tableLevel int,
    @date varchar(30)
AS
Declare @Sql nvarchar(max) 
declare @minTabId int
declare @maxTabId int
declare @maxf_id int
declare @helpTableName nvarchar(max)
declare @tableCount int
 
BEGIN
	 --最小f_id所在表
	 set @minTabId=0
	 set @tableCount=@minTabId
	 --最大f_id所在表
	 set @maxf_id=(select MAX(F_ID) from [Table] where F_IsDelete=0)
	 set @maxTabId=@maxf_id/@tablelevel
 
	 set @helpTableName='SELECT UserID, Max([F_DateTime]) AS dt FROM [Table] GROUP BY UserID'
 
	 while @tableCount<=@maxTabId
	 begin		
		print @tableCount
		set @helpTableName += ' UNION SELECT UserID, Max([DateTime]) as dt FROM SubTable'+cast(@tableCount as nvarchar(10))+' GROUP BY UserID '
		set @tableCount=@tableCount+1
	 end 
	          
     set @Sql='SELECT [nikename] FROM ( 
					SELECT UserID, RANK() OVER(PARTITION BY UserID ORDER BY dt) AS Num,dt FROM ( '+@helpTableName+' ) AS T ) AS NewT
			   LEFT JOIN [UserTable] A WITH(NOLOCK) ON NewT.UserID = A.UserId WHERE Num = 1 AND dt > '''+@date+''''
 
	 Exec sp_executesql @Sql
END
 
GO

partition的意思是对数据进行分区,sql语句如下

SELECT* FROM (
    SELECT
        ROW_NUMBER() over(partition by [姓名] order by [打卡时间] desc) as rowNum,
        [姓名],
        [打卡时间]
    FROM [dbo].[打卡记录表]
    ) temp
WHERE temp.rowNum = 1

通过 partition by [姓名] order by [打卡时间] desc,这句就可以做到,让数据按照姓名分组,并且在每组内部按照时间进行排序

到此这篇关于SQLServer RANK() 排名函数的使用的文章就介绍到这了,更多相关SQLServer RANK()内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

SQL Server 相关文章推荐
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
Jul 07 SQL Server
利用 SQL Server 过滤索引提高查询语句的性能分析
Jul 15 SQL Server
SQL语句中JOIN的用法场景分析
Jul 25 SQL Server
Windows环境下实现批量执行Sql文件
Oct 05 SQL Server
SQL SERVER存储过程用法详解
Feb 24 SQL Server
sql时间段切分实现每隔x分钟出一份高速门架车流量
Feb 28 SQL Server
MySQL 中如何归档数据的实现方法
Mar 16 SQL Server
SQL Server 忘记密码以及重新添加新账号
Apr 26 SQL Server
SQL Server中的游标介绍
May 20 SQL Server
SQL使用复合索引实现数据库查询的优化
May 25 SQL Server
SQL bool盲注和时间盲注详解
Jul 23 SQL Server
SQL CASE 表达式的具体使用
Mar 21 #SQL Server
SQL Server数据库基本概念、组成、常用对象与约束
Mar 20 #SQL Server
详解在SQLPlus中实现上下键翻查历史命令的功能
Mar 18 #SQL Server
SQL Server实现分页方法介绍
Mar 16 #SQL Server
SQL Server中常用截取字符串函数介绍
Mar 16 #SQL Server
通过T-SQL语句创建游标与实现数据库加解密功能
Mar 16 #SQL Server
MySQL 中如何归档数据的实现方法
You might like
php中memcache 基本操作实例
2015/05/17 PHP
php计算整个目录大小的方法
2015/06/19 PHP
全新Mac配置PHP开发环境教程
2016/02/03 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
JavaScript 原型链学习总结
2010/10/29 Javascript
JS date对象的减法处理实现代码
2010/12/28 Javascript
修改好的jquery滚动字幕效果实现代码
2011/06/22 Javascript
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
javascript解析json数据的3种方式
2014/05/08 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
jquery使用EasyUI Tree异步加载JSON数据(生成树)
2017/02/11 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
Vue.js组件间的循环引用方法示例
2017/12/27 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
JavaScript实现秒杀时钟倒计时
2019/09/29 Javascript
Vue绑定用户接口实现代码示例
2020/11/04 Javascript
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
python 判断一个进程是否存在
2009/04/09 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
Python 虚拟空间的使用代码详解
2019/06/10 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
美国轻奢时尚购物网站:REVOLVE(支持中文)
2020/07/18 全球购物
是否有自动比较结构的方法
2015/06/03 面试题
学生自我鉴定范文
2013/10/04 职场文书
英语专业职业生涯规划范文
2014/03/05 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书
风雨哈佛路观后感
2015/06/03 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
如何利用JavaScript实现二叉搜索树
2021/04/02 Javascript