SQLServer RANK() 排名函數(shù)的使用
本文主要介紹了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)行排序
到此這篇關(guān)于SQLServer RANK() 排名函數(shù)的使用的文章就介紹到這了,更多相關(guān)SQLServer RANK()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQLSERVER記錄登錄用戶的登錄時(shí)間(自寫(xiě)腳本)
下面是本人寫(xiě)的一個(gè)腳本,我的實(shí)現(xiàn)原理是使用觸發(fā)器,觸發(fā)器是登錄觸發(fā)器,范圍是整個(gè)服務(wù)器范圍,如果有人登錄過(guò),就使用 bcp命令把登錄信息記錄日志文件,感興趣的朋友可以了解下,或許本文的知識(shí)點(diǎn)對(duì)你有所幫助2013-02-02SQLSERVER 語(yǔ)句交錯(cuò)引發(fā)的死鎖問(wèn)題案例詳解
這篇文章主要介紹了SQLSERVER 語(yǔ)句交錯(cuò)引發(fā)的死鎖研究,要解決死鎖問(wèn)題,個(gè)人感覺(jué)需要非常熟知各種隔離級(jí)別,尤其是 可提交讀 模式下的 CURD 加解鎖過(guò)程,這一篇我們就來(lái)好好聊一聊2023-02-02sql語(yǔ)句查詢重復(fù)的數(shù)據(jù)(最新推薦)
這篇文章主要介紹了sql語(yǔ)句查詢重復(fù)的數(shù)據(jù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05在程序中壓縮sql server2000的數(shù)據(jù)庫(kù)備份文件的代碼
在程序中壓縮sql server2000的數(shù)據(jù)庫(kù)備份文件的代碼...2007-03-03sql語(yǔ)句中如何將datetime格式的日期轉(zhuǎn)換為yy-mm-dd格式
sql語(yǔ)句中如何將datetime格式的日期轉(zhuǎn)換為yy-mm-dd格式...2007-10-10