繁体   English   中英

SQL Server 2000:聘请每个月销售最多的人。 (无法替换SS 2000的等级功能)

[英]SQL Server 2000: Get person with most sales in each month. (Trouble replacing rank function for SS 2000)

我正在尝试获取销售人员的清单,以及他们在价值上销售最多的月份。 我有有效的查询,但直到现在我才意识到,由于该站点使用的是sql server 2000,因此我将无法使用rank函数。

这是我当前的查询

select top 5 name, count(*) as amount
from
(
     select e.first_name + ' ' + e.last_name name,
     RIGHT(CONVERT(VARCHAR(10), oe.entry_date, 105), 7) as date, sum(oe.totalPrice) price,
            rank() over(partition by RIGHT(CONVERT(VARCHAR(10), oe.entry_date, 105), 7) 
                order by sum(oe.totalPrice) desc) as ranking
     FROM order_entry oe
     INNER JOIN employees e ON oe.sales_rep_emp_number = e.employee_number
     group by e.first_name + ' ' + e.last_name, RIGHT(CONVERT(VARCHAR(10), oe.entry_date, 105), 7)
) temp
where ranking = 1
group by name
order by count(*) desc

我需要用不依赖于rank函数的东西来替换内部查询。 我发现了几种“重现”此功能效果的方法,但它们涉及到制作一个带有标识列的临时表,该列用作等级表。 但是,我有几个排名(每个月一个),所以这行不通。 此外,我认为没有rank功能,可能还有另一种方法来实现这一目标。

有人有想法么? 谢谢!

您需要回到第一原则。 以下查询获取前5名员工编号:

select top 5 sales_rep_emp_number, COUNT(*) as numMonths
from (select yr, mon, MAX(TotalPrice) as maxTotalPrice
      from (select year(oe.entry_date) as yr, month(oe.entry_date) as mon, oe.sales_rep_emp_number,
                   SUM(totalPrice) as totalPrice
            from order_entry oe
            group by year(oe.entry_date), month(oe.entry_date), oe.sales_rep_emp_number
           ) yme
      group by yr, mon
     ) ym join
     (select year(oe.entry_date) as yr, month(oe.entry_date) as mon, oe.sales_rep_emp_number,
             SUM(totalPrice) as totalPrice
      from order_entry oe
      group by year(oe.entry_date), month(oe.entry_date), oe.sales_rep_emp_number
     ) yme
     on ym.yr = yme.yr and
        ym.mon = yme.mon and
        ym.maxTotalPrice = ye.totalPrice
group by sales_rep_emp_number
order by 2 desc

它具有与rank()相同的“缺陷”-如果多个雇员的销售额相同,则可以将多个雇员视为给定月份的最高雇员。

我已将您加入其他员工信息的部分放在外面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM