網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
本文主要介紹了SQLServer RANK() 排名函數(shù)的使用,具體如下:
-- 例子表數(shù)據(jù) SELECT * FROM test; -- 統(tǒng)計(jì)分?jǐn)?shù) SELECT name,SUM(achievement) achievement FROM test GROUP BY name; -- 按統(tǒng)計(jì)分?jǐn)?shù)做排行 SELECT RANK() OVER( ORDER BY SUM(achievement) desc) 排行,name,SUM(achievement) achievement FROM test GROUP BY name;
求助問(wèn)答存儲(chǔ)過(guò)程使用:
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: 獲取今日發(fā)表幫助/回復(fù)的新用戶 -- ============================================= 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的意思是對(duì)數(shù)據(jù)進(jìn)行分區(qū),sql語(yǔ)句如下
SELECT* FROM ( SELECT ROW_NUMBER() over(partition by [姓名] order by [打卡時(shí)間] desc) as rowNum, [姓名], [打卡時(shí)間] FROM [dbo].[打卡記錄表] ) temp WHERE temp.rowNum = 1
通過(guò)?partition by [姓名] order by [打卡時(shí)間] desc,這句就可以做到,讓數(shù)據(jù)按照姓名分組,并且在每組內(nèi)部按照時(shí)間進(jìn)行排序
原文鏈接:https://blog.csdn.net/stupid_leilei/article/details/123522074
相關(guān)推薦
- 2022-08-23 在Asp.net?core中實(shí)現(xiàn)websocket通信_(tái)實(shí)用技巧
- 2023-01-29 React更新渲染原理深入分析_React
- 2022-11-17 React狀態(tài)管理Redux的使用介紹詳解_React
- 2022-03-18 c語(yǔ)言的指針數(shù)組詳解(c語(yǔ)言指針與數(shù)組)
- 2022-09-25 Redis時(shí)單線程設(shè)計(jì)的,為什么還這么快
- 2022-11-01 Python如何使用qrcode生成指定內(nèi)容的二維碼并在GUI界面顯示_python
- 2022-03-28 詳解Asp.net?5中的ApplicationBuilder_基礎(chǔ)應(yīng)用
- 2023-03-29 goland遠(yuǎn)程調(diào)試k8s上容器的實(shí)現(xiàn)_Golang
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支