sqlserver 按照某条件排序后分组统计

问题描述
–库名 USA_LogServer
–表名 Tbl_Room_BattleResultEx_Log
–字段名字 LogDate 日期时间,格式 2018-07-11 09:18:45.000
–字段名字 ID 玩家账号
–字段名字 personalAttack 攻击值
–每一条记录代表一个玩家 参与了一场战斗,这场战斗的时间 和 攻击值是多少
–我要的查询语句是,在指定的时间范围内 例如 2018-07-11 09:18:45.000 到 2019-07-11 09:18:45.000 期间 ,
–统计出每个玩家一共参与了多少场战斗,按时间顺序以10场战斗为一个基准,
–统计每10场战斗的攻击值累计加在一起是否达到50万或50万以上,举例,
–玩家abc 参与了31场战斗,1到10场达到50万次攻击值,10到20场达到50万次攻击值,
–但是剩下的11场没达到50万次,那么他达到要求的记录就是2次 ,
–查询出来的结果展示就是 ID + 满足这个每10场战斗累计攻击值达到过超过50万次的次数统计 + 战斗总场次 。
–那么就是 abc 2 31

分析主要是按照时间分组,然后对小组进行统计

  1. 个人觉得分组条件是比较精妙的思路
  2. 每10局算一组,且10局游戏是由玩家的登陆时间升序决定的,这里用到了row_number()over()的分组排序功能,统计出每个玩家的参与的总局数
  3. 然后按照10局一组统计,关键是分组条件id ,(sn-1)/10,ID是玩家ID账号,(sn-1)/10 ,恰好可以分组,1到10局整除后的结果都是0,11到20整除后的结果都是1,依此类推

select id,s

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值