ROW_NUMBER()在查询业绩排名中的使用
Posted buzhengsi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROW_NUMBER()在查询业绩排名中的使用相关的知识,希望对你有一定的参考价值。
想要查看每月销售业绩汇总并找出前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()在查询业绩排名中的使用的主要内容,如果未能解决你的问题,请参考以下文章
ROW_NUMBER 和 PARTITION 查询返回所有排名为 1 的行
Oracle:row_number()rank()dense_rank()