Sql server SQL Server:每周前10名销售人员及之前的排名
该查询返回一个列表,其中列出了一年中每周交易量最多的前10名销售人员 我如何在结果中添加以下列: 上周的排名 销售员 今年前十名的总周数 从第1周开始连续几周进入前10名 如果可能的话,从上一年开始连续几周进入前十名 你能就如何处理这类问题给出一般性的建议吗Sql server SQL Server:每周前10名销售人员及之前的排名,sql-server,sql-server-2008,ranking,Sql Server,Sql Server 2008,Ranking,该查询返回一个列表,其中列出了一年中每周交易量最多的前10名销售人员 我如何在结果中添加以下列: 上周的排名 销售员 今年前十名的总周数 从第1周开始连续几周进入前10名 如果可能的话,从上一年开始连续几周进入前十名 你能就如何处理这类问题给出一般性的建议吗 注:使用SQL server 2008我的建议是在视图中分别执行其他查询,然后由saleperson加入其中,我认为这是关键 逻辑是这个查询很好、干净并且容易理解。否则-我认为攻击这一点的方法是开始编写TSQL函数来计算其他值,但我认为这些
注:使用SQL server 2008我的建议是在视图中分别执行其他查询,然后由saleperson加入其中,我认为这是关键
逻辑是这个查询很好、干净并且容易理解。否则-我认为攻击这一点的方法是开始编写TSQL函数来计算其他值,但我认为这些函数无论如何都会包含查询。我的建议是在视图中单独执行其他查询,然后由saleperson加入,我认为这是关键
逻辑是这个查询很好、干净并且容易理解。否则-我认为解决这个问题的方法是开始编写TSQL函数来计算其他值,但我认为这些函数无论如何都会包含查询。事实上,我不认为视图是最好的方法。您可以在CTE中执行这种逻辑,并将整个内容组合到一个查询中。例如,以下是除了连续逻辑之外的所有内容:
select *
from
(
select year,
week,
salesperson,
count(*) as transactions,
rank() over(partition by week order by count(*) desc) as ranking
from sales
where year = '2010',
group by year,
week,
salesperson
) temp
where ranking <= 10
连续的逻辑可能需要一个日历表,该表包含每天的值以及给定日期的年和周的列 事实上,我不相信观点是最好的方式。您可以在CTE中执行这种逻辑,并将整个内容组合到一个查询中。例如,以下是除了连续逻辑之外的所有内容:
select *
from
(
select year,
week,
salesperson,
count(*) as transactions,
rank() over(partition by week order by count(*) desc) as ranking
from sales
where year = '2010',
group by year,
week,
salesperson
) temp
where ranking <= 10
连续的逻辑可能需要一个日历表,该表包含每天的值以及给定日期的年和周的列 为了知道前几周的值,需要知道当前一周是什么…为了知道前几周的值,需要知道当前一周是什么…这听起来像是一条路要走。谢谢你的建议:-这听起来确实是个好办法。谢谢你的建议:-