RANK()排名函数如何使用,能做什么
Admin 2022-08-08 群英技术资讯 697 次浏览
本文主要介绍了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;
求助问答存储过程使用:
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,这句就可以做到,让数据按照姓名分组,并且在每组内部按照时间进行排序
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本文给大家带来了Mysql中错误使用SQL语句Groupby被兼容的情况,及sql的grop by 语句介绍。感兴趣的朋友一起通过本文学习吧
前言前面我们的几篇文章介绍了一系列关于运算符的介绍,以及各个运算符的优化方式和技巧。其中涵盖:查看执行计划的方式、几种数据集常用的连接方式、联合运算符方式、并...
这篇文章主要介绍了Spark SQL 2.4.8 操作 Dataframe的两种方式,方式一是通过dsl操作,方式二是利用sql方式操作,每种方式通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
sql server怎样实现批量插入数据?我们经常会需要做插入数据操作,那么对于批量数据我们如何插入呢?下面小编就给大家分享三种插入数据方式和批量插入实例 ,感兴趣的朋友可以参考参考。
这篇文章主要介绍了Sql Server中实现行数据转为列显示,文章基于Sql语句的相关资料展开如何实现数据转为列显的操作过程,需要的小伙伴可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008