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 07 SQL Server
SQLServer 日期函数大全(小结)
Apr 08 SQL Server
SQLServer2019 数据库环境搭建与使用的实现
Apr 08 SQL Server
SQL语句中JOIN的用法场景分析
Jul 25 SQL Server
SQL Server内存机制浅探
Apr 06 SQL Server
SQL Server使用导出向导功能
Apr 08 SQL Server
sql server偶发出现死锁的解决方法
Apr 10 SQL Server
Sql Server 行数据的某列值想作为字段列显示的方法
Apr 20 SQL Server
SQL Server中使用表变量和临时表
May 20 SQL Server
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
May 25 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
PHP 分页类(模仿google)-面试题目解答
2009/09/13 PHP
PHP文件读写操作之文件读取方法详解
2011/01/13 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
利用php-cli和任务计划实现订单同步功能的方法
2017/05/03 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
jQuery实现类似淘宝购物车全选状态示例
2013/06/26 Javascript
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
node.js中的path.sep方法使用说明
2014/12/08 Javascript
在JavaScript中如何解决用execCommand(
2015/10/19 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
2015/12/02 Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
2016/05/12 Javascript
JavaScript 详解预编译原理
2017/01/22 Javascript
移动端利用H5实现压缩图片上传功能
2017/03/29 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频
2018/12/05 DOTA
[01:01:52]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第二场 1月9日
2021/03/11 DOTA
python 简易计算器程序,代码就几行
2009/08/29 Python
Python科学计算环境推荐——Anaconda
2014/06/30 Python
Django自定义过滤器定义与用法示例
2018/03/22 Python
PyQt5每天必学之切换按钮
2020/08/20 Python
Appium+python自动化怎么查看程序所占端口号和IP
2019/06/14 Python
python根据多个文件名批量查找文件
2019/08/13 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
Python猴子补丁知识点总结
2020/01/05 Python
python matplotlib imshow热图坐标替换/映射实例
2020/03/14 Python
Trunki英国官网:儿童坐骑式行李箱
2017/05/30 全球购物
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
个性发展自我评价
2014/02/11 职场文书
经贸日语专业个人求职信范文
2014/04/29 职场文书
倡议书格式模板
2014/05/13 职场文书
个人授权委托书
2014/09/15 职场文书
运动会广播稿50字
2015/08/19 职场文书
使用JS实现简易计算器
2021/06/14 Javascript
Python 一键获取电脑浏览器的账号密码
2022/05/11 Python
SQL Server中的游标介绍
2022/05/20 SQL Server