请教各位大大,怎么统计记录中连续3次为赢分的用户(也就是连赢3局的用户)

jhlovett 2016-12-10 05:37:25

UserID为用户的ID,Score为输赢分(正数为赢分,负数为输分)

请教各位大大,怎么统计记录中连续3次为赢分的用户(也就是连赢3局的用户)
连续3次为输分的用户(也就是连输3局的用户)
...全文
303 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2016-12-10
  • 打赏
  • 举报
回复
Type=-1为负数,1为正数,0为0 e.g.
;
WITH    CTET
          AS ( SELECT   UserID ,
                        Score ,
                        SIGN(Score) AS Type ,
                        ROW_NUMBER() OVER ( PARTITION BY RAND() ) AS Ord
               FROM     Table1
             )
    SELECT DISTINCT
            UserID
			,Type
    FROM    ( SELECT    * ,
                        ROW_NUMBER() OVER ( PARTITION BY UserID, Type ORDER BY Ord ) AS Ord2
              FROM      CTET
            ) AS t
    GROUP BY UserID ,Type
            Ord - Ord2
    HAVING  COUNT(*) >= 3;

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧