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 08 SQL Server
SQLServer2008提示评估期已过解决方案
Apr 12 SQL Server
sqlserver2017共享功能目录路径不可改的解决方法
Apr 16 SQL Server
SQL Server2019数据库之简单子查询的具有方法
Apr 27 SQL Server
在 SQL 语句中处理 NULL 值的方法
Jun 07 SQL Server
Windows环境下实现批量执行Sql文件
Oct 05 SQL Server
SQL CASE 表达式的具体使用
Mar 21 SQL Server
SQL Server中的游标介绍
May 20 SQL Server
SQL Server删除表中的重复数据
May 25 SQL Server
SQL使用复合索引实现数据库查询的优化
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 HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
php中文繁体和简体相互转换的方法
2015/03/21 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
php二维码生成以及下载实现
2017/09/28 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
鼠标移到导航当前位置的LI变色处于选中状态
2013/08/23 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
2014/07/18 Javascript
angularjs指令中的compile与link函数详解
2014/12/06 Javascript
javascript实现图像循环明暗变化的方法
2015/02/25 Javascript
实现easyui的datagrid导出为excel的示例代码
2016/11/10 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
sublime text 3配置使用python操作方法
2017/06/11 Python
利用python模拟sql语句对员工表格进行增删改查
2017/07/05 Python
html5是什么_动力节点Java学院整理
2017/07/07 HTML / CSS
世界上最大的二手相机店:KEN
2017/05/17 全球购物
澳大利亚音乐商店:Bava’s Music City
2019/05/05 全球购物
全民健身日活动方案
2014/01/29 职场文书
基督教婚礼主持词
2014/03/14 职场文书
国旗下演讲稿
2014/05/08 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
入党自荐书范文
2015/03/05 职场文书
端午节寄语2015
2015/03/23 职场文书
房租涨价通知
2015/04/23 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang
python中pycryto实现数据加密
2022/04/29 Python