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基本使用和简单的CRUD操作
Apr 05 SQL Server
SQL SERVER中常用日期函数的具体使用
Apr 08 SQL Server
SQLServer2008提示评估期已过解决方案
Apr 12 SQL Server
SQL Server中交叉联接的用法详解
Apr 22 SQL Server
SQL Server2019数据库之简单子查询的具有方法
Apr 27 SQL Server
sql字段解析器的实现示例
Jun 23 SQL Server
SQLServer中JSON文档型数据的查询问题解决
Jun 27 SQL Server
SQL Server表分区删除详情
Oct 16 SQL Server
sql server 累计求和实现代码
Feb 28 SQL Server
SQL Server使用导出向导功能
Apr 08 SQL Server
如何使用SQL Server语句创建表
Apr 12 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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
php SQL防注入代码集合
2008/04/25 PHP
Zend的Registry机制的使用说明
2013/05/02 PHP
深入php 正则表达式的学习探讨
2013/06/06 PHP
Window下PHP三种运行方式图文详解
2013/06/11 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
2017/06/30 PHP
php取出数组单个值的方法
2018/03/12 PHP
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
jQuery数组处理方法汇总
2011/06/20 Javascript
jQuery中is()方法用法实例
2015/01/06 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
javascript实现动态标签云
2015/10/16 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
vue+element-ui+ajax实现一个表格的实例
2018/03/09 Javascript
Vue中对iframe实现keep alive无刷新的方法
2019/07/23 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
[03:17]DOTA2英雄基础教程 剧毒术士
2013/12/12 DOTA
[00:16]热血竞技场
2019/03/06 DOTA
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
简单谈谈python中的多进程
2016/11/06 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
python_opencv用线段画封闭矩形的实例
2018/12/05 Python
Python传递参数的多种方式(小结)
2019/09/18 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
团工委书记自荐书范文
2013/12/17 职场文书
年度考核自我鉴定
2014/02/02 职场文书
构建和谐校园倡议书
2015/01/19 职场文书
停课通知书
2015/04/24 职场文书
学校证明范文
2015/06/24 职场文书