RANK()排名函数如何使用,能做什么
Admin 2022-08-08 群英技术资讯 1141 次浏览
这篇文章主要介绍“RANK()排名函数如何使用,能做什么”,有一些人在RANK()排名函数如何使用,能做什么的问题上存在疑惑,接下来小编就给大家来介绍一下相关的内容,希望对大家解答有帮助,有这个方面学习需要的朋友就继续往下看吧。本文主要介绍了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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本文通过介绍默认使用索引、强制使用聚集索引、强制使用非聚集索引让我们知道对于检索所有列结果集使用主键的聚集索引是最佳选择。有兴趣的朋友可以看下
SQLite 的 AUTOINCREMENT 是一个关键字,用于表中的字段值自动递增,关键字 AUTOINCREMENT 只能用于整型(INTEGER)字段。
本文详细讲解了SQL Server中的数据类型,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这篇文章介绍了SQL Server分页的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
这篇文章主要介绍了group by 按某一时间段分组统计并查询,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008