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ù)的新用戶(hù)
-- =============================================
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
GOpartition的意思是對(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)文章
必須會(huì)的SQL語(yǔ)句(四) 數(shù)據(jù)刪除和更新
這篇文章主要介紹了sqlserver中數(shù)據(jù)刪除和更新的sql語(yǔ)句,需要的朋友可以參考下2015-01-01
使用用SQL語(yǔ)句從電腦導(dǎo)入圖片到數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了用SQL語(yǔ)句從電腦導(dǎo)入圖片到數(shù)據(jù)庫(kù)的方法,文中給大家提到了從MySQL數(shù)據(jù)庫(kù)讀取圖片和向數(shù)據(jù)庫(kù)插入圖片的代碼,需要的朋友可以參考下2019-09-09
SQL Server高可用的常見(jiàn)問(wèn)題分析
SQL Server高可用不就是微軟的那幾個(gè)技術(shù)嗎,如Replication, Failover Clustering,本文將詳細(xì)介紹,有需求的朋友可以參考下2012-11-11
SQL server分頁(yè)的四種方法思路詳解(最全面教程)
這篇博客講的是SQL server的分頁(yè)方法,用的SQL server 2012版本。下面都用pageIndex表示頁(yè)數(shù),pageSize表示一頁(yè)包含的記錄。并且下面涉及到具體例子的,設(shè)定查詢(xún)第2頁(yè),每頁(yè)含10條記錄,對(duì)sqlserver分頁(yè)相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧2022-12-12
SQL Server查看login所授予的具體權(quán)限問(wèn)題
在SQL Server數(shù)據(jù)庫(kù)中如何查看一個(gè)登錄名(login)的具體權(quán)限呢,下面腳本之家小編給大家?guī)?lái)了SQL Server查看login所授予的具體權(quán)限問(wèn)題,感興趣的朋友一起看看吧2019-09-09
利用腳本自動(dòng)安裝SQLServer的實(shí)現(xiàn)步驟分析
在工作中,經(jīng)常被要求一天安裝個(gè)10臺(tái)、8臺(tái)的SQL Server。2010-11-11

