Sql 基于单独的数字列计算连续周数

Sql 基于单独的数字列计算连续周数,sql,tsql,Sql,Tsql,我正在解决一个问题,员工每周都会得到一定的分数。他们每周只有1分,每个星期六都会被保存下来。我想数一数连续超过50周(从今天开始向后计算)的数量。如果前一周不超过50周,则他们将有0个连续周。如果他们在过去的一年中每周得分超过50分,那么他们将连续52周得分 我已经尝试使用Row_Number()函数来获得这个结果,但不知道如何将分数作为一个因子加入其中 这是数据集的一个示例: EmpID Last Week Score A 7/6/2019 60 A 6

我正在解决一个问题,员工每周都会得到一定的分数。他们每周只有1分,每个星期六都会被保存下来。我想数一数连续超过50周(从今天开始向后计算)的数量。如果前一周不超过50周,则他们将有0个连续周。如果他们在过去的一年中每周得分超过50分,那么他们将连续52周得分

我已经尝试使用Row_Number()函数来获得这个结果,但不知道如何将分数作为一个因子加入其中

这是数据集的一个示例:

EmpID  Last Week  Score   
A      7/6/2019   60   
A      6/29/2019  84   
A      6/22/2019  21    
B      7/6/2019   41    
B      6/29/2019  92    
C      7/6/2019   77    
C      6/29/2019  55    
C      6/22/2019  71    
C      6/15/2019  63    
这就是我到目前为止所尝试的

SELECT
    EmpID,
    EOW,
    SCORE,
    ROW_NUMBER() OVER(PARTITION BY EMP ORDER BY EOW DESC) AS RN
FROM a
ORDER BY EmpID, EOW DESC
但这只给了我每个员工的行数。当他们的分数低于50分时,我需要停止计数,如下所示:

EmpID  Last Week  Score   RN
A      7/6/2019   60      1
A      6/29/2019  84      2
A      6/22/2019  21      -
B      7/6/2019   41      -
B      6/29/2019  92      -
C      7/6/2019   77      1
C      6/29/2019  55      2
C      6/22/2019  71      3
C      6/15/2019  63      4
然后,我需要为每个员工获得一个连续的星期数,这样我就可以将结果加入到一个更大的查询中,从而获取关于该员工的更多信息。分数在不同的表格中,这就是为什么我必须加入它。查询应产生如下结果:

EmpID  Last Week    Consecutive Week
A      7/6/2019     2
B      7/6/2019     0
C      7/6/2019     4

这有意义吗?任何帮助都将不胜感激

我使用了条件聚合和运行total

基本思想是:

如果数字>=50,则派生列的和为0


连续零将在第一次使用条件聚合和运行总计时停止

基本思想是:

如果数字>=50,则派生列的和为0

连续零将在第一个点停止
('D','7/6/2019'  , 51 )   
('D','6/29/2019' , 49)   
('D','6/22/2019'  ,52 ) 
SELECT B.EmpID,B.[Last Week], CASE WHEN B.TOTAL <= 1 THEN 0 ELSE B.TOTAL END AS RN
FROM (
SELECT A.EmpID, MAX(EOW) AS [Last Week], SUM(CASE WHEN A.COUNT1 = 0 THEN 1 ELSE 0 END) AS TOTAL
FROM
(
SELECT EMPID,EOW, Score
, SUM(CASE WHEN SCORE >= 50 THEN 0 ELSE 1 END) OVER (PARTITION BY EMPID ORDER BY EOW DESC) AS COUNT1
FROM TEST
GROUP BY EMPID,EOW,Score
)A
GROUP BY A.EmpID
)B