您正在使用 IPV4 [3.235.46.191] 访问本站,您本次已经查看了 1 页
用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
[公益]保护绿色环境,构建和谐社会       悟空收录网      

【腾讯云】 爆款2核2G3M云服务器首年 61元,叠加红包再享折上折      
[公益] 地球是我家,绿化靠大家      
2024年 清明节 007
2024年 劳动节 034
2025年 元 旦 279
2025年 春 节 307
 
您现在的位置:首页 >> 数据库 >> 内容
本类新增
本类热门
SQLServer RANK() 排名函数的使用
内容摘要: 本文主要介绍了SQLServerRANK()排名函数的使用,具体如下:--例子表数据SELECT*FROMtest;--统计分数SELECTname,SUM(achievement)achievementFROMtestGROUPBYname;--按统计分数做排行SELECTRANK()OVER(ORDERBYSUM(achievement)desc)排行,......
本文主要介绍了SQLServerRANK()排名函数的使用,具体如下:

--例子表数据

SELECT*FROMtest;

--统计分数

SELECTname,SUM(achievement)achievementFROMtestGROUPBYname;

--按统计分数做排行

SELECTRANK()OVER(ORDERBYSUM(achievement)desc)排行,name,SUM(achievement)achievementFROMtestGROUPBYname;

求助问答存储过程使用:

USE[DB]

GO

/******Object:StoredProcedure[dbo].[sp_TodayJoinUser]ScriptDate:2021/1/2614:45:24******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

--=============================================

--Author:_Hey_Jude

--Createdate:2021-01-26

--Description:获取今日发表帮助/回复的新用户

--=============================================

CREATEPROCEDURE[dbo].[sp_TodayJoinUser]

@tableLevelint,

@datevarchar(30)

AS

Declare@Sqlnvarchar(max)

declare@minTabIdint

declare@maxTabIdint

declare@maxf_idint

declare@helpTableNamenvarchar(max)

declare@tableCountint

BEGIN

--最小f_id所在表

set@minTabId=0

set@tableCount=@minTabId

--最大f_id所在表

set@maxf_id=(selectMAX(F_ID)from[Table]whereF_IsDelete=0)

set@maxTabId=@maxf_id/@tablelevel

set@helpTableName='SELECTUserID,Max([F_DateTime])ASdtFROM[Table]GROUPBYUserID'

while@tableCount<=@maxTabId

begin

print@tableCount

set@helpTableName+='UNIONSELECTUserID,Max([DateTime])asdtFROMSubTable'+cast(@tableCountasnvarchar(10))+'GROUPBYUserID'

set@tableCount=@tableCount+1

end

set@Sql='SELECT[nikename]FROM(

SELECTUserID,RANK()OVER(PARTITIONBYUserIDORDERBYdt)ASNum,dtFROM('+@helpTableName+')AST)ASNewT

LEFTJOIN[UserTable]AWITH(NOLOCK)ONNewT.UserID=A.UserIdWHERENum=1ANDdt>'''+@date+''''

Execsp_executesql@Sql

END

GO

partition的意思是对数据进行分区,sql语句如下

SELECT*FROM(

SELECT

ROW_NUMBER()over(partitionby[姓名]orderby[打卡时间]desc)asrowNum,

[姓名],

[打卡时间]

FROM[dbo].[打卡记录表]

)temp

WHEREtemp.rowNum=1

通过partitionby[姓名]orderby[打卡时间]desc,这句就可以做到,让数据按照姓名分组,并且在每组内部按照时间进行排序

版权声明:本内容来源于互联网,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
上一篇:用户sa登录失败。原因: 未与信任 SQL Server 连

 

下一篇:SQL Server实现分页方法介绍

发布日期:2022/3/23
手机扫二维码直达本页
发布时间:13:23:10
点  击:2
录  入:壹家怡园
相关文章
Baidu
YiJiaCMS 7.3.8 build231228(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,Cloudflare提供加速防护
运行时间载入中.....