Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server:每周前10名销售人员及之前的排名_Sql Server_Sql Server 2008_Ranking - Fatal编程技术网

Sql server SQL Server:每周前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函数来计算其他值,但我认为这些

该查询返回一个列表,其中列出了一年中每周交易量最多的前10名销售人员

我如何在结果中添加以下列:

上周的排名 销售员 今年前十名的总周数 从第1周开始连续几周进入前10名 如果可能的话,从上一年开始连续几周进入前十名 你能就如何处理这类问题给出一般性的建议吗


注:使用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

连续的逻辑可能需要一个日历表,该表包含每天的值以及给定日期的年和周的列

为了知道前几周的值,需要知道当前一周是什么…为了知道前几周的值,需要知道当前一周是什么…这听起来像是一条路要走。谢谢你的建议:-这听起来确实是个好办法。谢谢你的建议:-