码迷,mamicode.com
首页 > 其他好文 > 详细

ROW_NUMBER()在查询业绩排名中的使用

时间:2019-03-26 15:21:07      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:diff   row   最大   sele   date()   mon   nbsp   date   over   

想要查看每月销售业绩汇总并找出前3名时发现无法使用TOP实现,求助后得到以下方法实现。

 

with a
as
(
SELECT Salesperson,Left(orderdate,6) AS Month,   SUM(CONVERT(decimal(13,2),TaxAmount)) AS TotalAmount
FROM ImportOrder
WHERE DATEDIFF(YEAR,orderdate,GETDATE()) = 1  --查找的是去年的数据,所以差异为1。
GROUP BY Salesperson, Left(orderdate,6)
),
b as
(
select Salesperson,[Month],TotalAmount,ROW_NUMBER() over (partition by [Month] order by TotalAmount DESC) as rank_ from a --使用DESC是找出业绩最大的,去除即为找出业绩最差的。
)
select Salesperson,[Month],TotalAmount from b where rank_ <=3  --只找出前3名。
ORDER BY Month DESC, TotalAmount DESC

ROW_NUMBER()在查询业绩排名中的使用

标签:diff   row   最大   sele   date()   mon   nbsp   date   over   

原文地址:https://www.cnblogs.com/buzhengsi/p/10600160.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!