SQL Server 2014 按年度、部门分组排名并且统计组内排名人数

1、数据库(sql server2014)

CREATE TABLE [dbo].[OA_UserRanking](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[EmployeeNo] [nvarchar](50) NULL,
	[EmployeeName] [nvarchar](50) NULL,
	[Year] [varchar](10) NULL,
	[DepartmentID] [varchar](50) NULL,
	[TotalScore] [decimal](18, 2) NULL,
	[Ranking] [int] NULL,
 CONSTRAINT [PK_OA_UserRanking] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

2、测试数据

SET IDENTITY_INSERT [dbo].[OA_UserRanking] ON 

GO
INSERT [dbo].[OA_UserRanking] ([ID], [EmployeeNo], [EmployeeName], [Year], [DepartmentID], [TotalScore], [Ranking]) VALUES (1, N'00001', N'张三', N'2021', N'D0101', CAST(60.00 AS Decimal(18, 2)), 0)
GO
INSERT [dbo].[OA_UserRanking] ([ID], [EmployeeNo], [EmployeeName], [Year], [DepartmentID], [TotalScore], [Ranking]) VALUES (2, N'00002', N'李四', N'2021', N'D0101', CAST(80.00 AS Decimal(18, 2)), 0)
GO
INSERT [dbo].[OA_UserRanking] ([ID], [EmployeeNo], [EmployeeName], [Year], [DepartmentID], [TotalScore], [Ranking]) VALUES (3, N'00003', N'徐凯', N'2021', N'D0102', CAST(70.00 AS Decimal(18, 2)), 0)
GO
INSERT [dbo].[OA_UserRanking] ([ID], [EmployeeNo], [EmployeeName], [Year], [DepartmentID], [TotalScore], [Ranking]) VALUES (4, N'00005', N'吴朵', N'2021', N'D0102', CAST(40.00 AS Decimal(18, 2)), 0)
GO
INSERT [dbo].[OA_UserRanking] ([ID], [EmployeeNo], [EmployeeName], [Year], [DepartmentID], [TotalScore], [Ranking]) VALUES (5, N'00006', N'李世伟', N'2021', N'D0102', CAST(60.00 AS Decimal(18, 2)), 0)
GO
SET IDENTITY_INSERT [dbo].[OA_UserRanking] OFF
GO

在这里插入图片描述

3、按年度、部门分组排名并且统计组内排名人数

SELECT  ur.ID ,
        ur.EmployeeNo ,
        ur.EmployeeName ,
        ur.Year ,
        ur.DepartmentID ,
        ur.TotalScore ,
        COUNT(1) OVER ( PARTITION BY ur.Year, ur.DepartmentID ) AS TotalUser ,
        DENSE_RANK() OVER ( PARTITION BY ur.Year, ur.DepartmentID ORDER BY ur.TotalScore DESC ) AS Ranking
FROM    dbo.OA_UserRanking ur;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值