欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

计总与排名SUM和RANK函数

程序员文章站 2024-01-22 15:54:52
准备一些数据: CREATE TABLE [dbo].[SalesPerformance]( [ID] [int] IDENTITY(1,1) NOT NULL, [Salesman] NVARCHAR(30) NOT NULL, [OrderDate] [DATE] NULL, [Sell] DE ......


准备一些数据:

计总与排名SUM和RANK函数

 

create table [dbo].[salesperformance](
    [id] [int] identity(1,1) not null,
    [salesman] nvarchar(30) not null,
    [orderdate] [date] null,
    [sell]    decimal(18,2) null
 )
go


select [salesman],[orderdate],[sell] from [dbo].[salesperformance]
go

 

salesman    orderdate    sell
s0003    2019-05-12    23800.00
s0008    2019-05-19    66528.00
s0001    2019-05-05    35455.00
s0001    2019-05-18    75220.00
s0003    2019-05-17    33658.00
s0041    2019-05-10    56300.00
s0041    2019-05-11    41811.00
s0003    2019-05-20    26309.00
s0007    2019-05-02    41811.00
s0022    2019-05-26    26309.00
s0032    2019-05-20    20000.00
s0050    2019-05-28    20000.00

 

使用sum和group by统计各个业务员的销售额:

 

select [salesman] as [业务员],month([orderdate]) as [月份], sum([sell]) as [销售量]
from [dbo].[salesperformance]
group by [salesman],month([orderdate])

 

然后使用rank进行排名,看看谁是销售冠军,谁与谁同级:

 

;with [quantityofsale] as
(
    select [salesman] as [业务员],month([orderdate]) as [月份], sum([sell]) as [销售量]
    from [dbo].[salesperformance]
    group by [salesman],month([orderdate])
)

select [业务员],[月份],[销售量],rank() over( order by [销售量] desc) [销售排名]
from [quantityofsale]