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数据定义——模式与基本表操作
Apr 05 SQL Server
SqlServer: 如何更改表的文件组?(进而改变存储位置)
Apr 05 SQL Server
sql中mod()函数取余数的用法
May 29 SQL Server
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
Jul 07 SQL Server
SQL语句中JOIN的用法场景分析
Jul 25 SQL Server
SQL写法--行行比较
Aug 23 SQL Server
详解在SQLPlus中实现上下键翻查历史命令的功能
Mar 18 SQL Server
SQL Server数据库查询出现阻塞之性能调优
Apr 10 SQL Server
MSSQL基本语法操作
Apr 11 SQL Server
SQL Server 忘记密码以及重新添加新账号
Apr 26 SQL Server
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
May 25 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
几种显示数据的方法的比较
2006/10/09 PHP
如何在PHP中进行身份认证
2006/10/09 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
用prototype实现的简单小巧的多级联动菜单
2007/03/24 Javascript
javascript 解析url的search方法
2010/02/09 Javascript
jquery json 实例代码
2010/12/02 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
2016/08/11 Javascript
利用iscroll4实现轮播图效果实例代码
2017/01/11 Javascript
Ubuntu下安装PyV8
2016/03/13 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
Python3转换html到pdf的不同解决方案
2019/03/11 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
Django CBV与FBV原理及实例详解
2019/08/12 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
2019/10/14 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
Canvas获取视频第一帧缩略图的实现
2020/11/11 HTML / CSS
Steve Madden官网:美国鞋类品牌
2017/01/29 全球购物
JSF的标签库有哪些
2012/04/27 面试题
自荐信格式的六要素
2013/09/21 职场文书
毕业留言寄语大全
2014/04/10 职场文书
经营理念标语
2014/06/21 职场文书
优秀党支部申报材料
2014/12/24 职场文书
交通事故和解协议书
2015/01/27 职场文书
2015年试用期自我评价范文
2015/03/10 职场文书
运动会新闻稿
2015/07/17 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
mysql 如何获取两个集合的交集/差集/并集
2021/06/08 MySQL
PostgreSQL自动更新时间戳实例代码
2021/11/27 PostgreSQL
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL