怎么统计连续数据的个数

我这个帅逼 2018-05-25 08:45:06
现在有一个对战信息表, 表里存了玩家ID,胜负情况, 现在需要统计每一个玩家的连胜或者连败情况,有没有什么思路.

比方说如我的截图里玩家1两连胜,玩家2三连败,玩家3 三连胜,那么结果就返回下表这样的结果
...全文
1543 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT-WeiHan 2018-05-29
  • 打赏
  • 举报
回复
不好意思 前面没看完的你的题目 这边重新写一个

CREATE TABLE TestTable
    (`ID` int, `胜负` varchar(4))
;
    
INSERT INTO TestTable
    (`ID`, `胜负`)
VALUES
    (1, 'win'),
    (1, 'win'),
    (1, 'loss'),
    (1, 'loss'),
    (1, 'win'),
    (2, 'win'),
    (2, 'win'),
    (2, 'win'),
    (2, 'loss'),
    (2, 'loss'),
    (2, 'loss'),
    (3, 'win'),
    (3, 'win'),
    (3, 'win')
;

CREATE TABLE IF NOT EXISTS temp_table AS (
  select @rownum:=@rownum + 1 as sid
  ,t.* 
  from TestTable t
  ,(SELECT @rownum := 0) r
);

CREATE TABLE IF NOT EXISTS WinningStreak AS (
  select T1.* from temp_table T1
  left join temp_table T2 on T1.id = T2.id
    and T1.sid = T2.sid + 1 and T1.`胜负` = T2.`胜负`
  left join temp_table T3 on T1.id = T3.id
    and T1.sid = T3.sid - 1 and T1.`胜负` = T3.`胜负`
  where T2.sid is not null or T3.sid is not null
  order by T1.sid
);

CREATE TABLE IF NOT EXISTS SerailTable AS (
  select T1.*,T2.sid T2flag, T3.sid T3flag from WinningStreak T1
  left join WinningStreak T2
    on T1.sid = T2.sid + 1 and T1.`胜负` = T2.`胜负`
  left join WinningStreak T3
    on T1.sid = T3.sid - 1 and T1.`胜负` = T3.`胜负`
  order by T1.sid
);

CREATE TABLE IF NOT EXISTS RankTable AS (
  select @rownum:=@rownum + 1 as rank,T.* from (
    select * from  SerailTable
    where T2flag is not null and T3flag is null
    union all
    select * from  SerailTable
    where T2flag is null and T3flag is not null
  ) T,(SELECT @rownum := 0) r
  order by sid
);

select 
T1.id,T1.`胜负`,(T2.sid-T1.sid + 1) recode
from 
(select * from  RankTable where rank %  2 = 1) T1
left join (select * from  RankTable where rank % 2 = 0) T2
on T1.rank + 1 = T2.rank


## 得出id 1 先连赢两场接着连输两场
## ID 2 连赢三场接着连输三场
| id |   胜负 | recode |
|----|------|--------|
|  1 |  win |      2 |
|  1 | loss |      2 |
|  2 |  win |      3 |
|  2 | loss |      3 |
|  3 |  win |      3 |
满好玩的问题 你先看一下,有不懂的地方再问我
IT-WeiHan 2018-05-29
  • 打赏
  • 举报
回复

CREATE TABLE TestTable
    (`ID` int, `胜负` varchar(4))
;
    
INSERT INTO TestTable
    (`ID`, `胜负`)
VALUES
    (1, 'win'),
    (1, 'win'),
    (1, 'loss'),
    (1, 'win'),
    (2, 'win'),
    (2, 'win'),
    (2, 'win'),
    (2, 'loss'),
    (2, 'loss'),
    (2, 'loss'),
    (2, 'loss'),
    (2, 'loss'),
    (2, 'loss'),
    (3, 'win'),
    (3, 'win'),
    (3, 'win')
;

select 
ID,sum(
  case when `胜负` = 'win' then 1
  when `胜负` = 'loss' then -1
  else 0
  end
) recode
from TestTable
group by ID;

| ID | recode |
|----|--------|
|  1 |      2 |
|  2 |     -3 |
|  3 |      3 |
        
ACMAIN_CHM 2018-05-29
  • 打赏
  • 举报
回复
排序字段是什么?建议完整贴出例子。
kampoo 2018-05-29
  • 打赏
  • 举报
回复
用SQL-DML脚本貌似不易处理,可以考虑存储过程处理 或者 读取到程序中进行处理。
ACMAIN_CHM 2018-05-26
  • 打赏
  • 举报
回复
表中至少需要一个能用于排序的字段。
我这个帅逼 2018-05-26
  • 打赏
  • 举报
回复
引用 1 楼 ACMAIN_CHM 的回复:
表中至少需要一个能用于排序的字段。
嗯是的,已经按时间排好序了
内容概要:本文研究了在通信资源受限与恶意攻击干扰下的孤岛微电网分布式二次控制策略,提出了一种兼具通信效率与攻击弹性的动态事件触发控制方案,旨在实现电压频率的精确恢复与有功无功功率的均衡共享。通过Simulink仿真与Matlab代码实现,系统验证了该策略在显著降低通信频次的同时,能够有效抵御拒绝服务(DoS)等网络攻击,保障微电网在复杂环境下的稳定运行。研究深入探讨了动态事件触发机制的设计、分布式控制算法的弹性优化,并确保系统具备排除芝诺行为的能力,从而全面提升微电网在极端条件下的鲁棒性、可靠性与运行效率。; 适合人群:具备电力系统、自动化或相关领域基础知识,从事微电网、分布式控制、能源系统安全方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于孤岛微电网在遭受通信限制和网络攻击时的二次电压与频率调节;②为高比例新能源接入场景下的微电网提供具备攻击容忍能力的弹性控制解决方案;③支持科研仿真验证与教学演示,推动分布式能源系统安全控制技术的发展。; 阅读建议:建议结合提供的Simulink模型与Matlab代码进行仿真实践,深入理解控制策略的实现细节,并可通过修改攻击模型、通信参数或网络拓扑进行拓展性研究,以全面掌握其弹性机制与优化潜力。
上市公司绿色全要素生产率(Green Total Factor Productivity,简称GTFP)是衡量企业绿色发展和资源配置效率的重要指标,其不仅关注经济效益,还强调环境效益,体现了绿色发展理念。 一、上市公司绿色全要素生产率的介绍 上市公司绿色全要素生产率是衡量企业在实现绿色发展的过程中,如何有效地利用劳动、资本、能源等资源进行生产的综合效率。本分享数据涵盖2500+家上市公司,数据年份为2007-2022年,共46424条样本,含证券代码、年份、绿色全要素生产率、绿色技术效率变化指数、绿色技术进步变化指数。 二、数据指标 绿色全要素生产率 绿色技术效率变化指数 绿色技术进步变化指数 用于衡量企业绿色发展效率的综合指标 反映绿色技术使用效率的变化 衡量绿色技术进步的效果 三、测算方式 企业绿色全要素生产率的测算采用了非径向SBM-ML指数(简称“ML指数”)模型。该模型通过将企业的环境污染、绿色技术进步等因素纳入生产效率评价体系,全面反映了企业在绿色发展方面的整体表现。 具体的测算方式如下: (1)要素投入:以企业员工数作为劳动投入的代理变量,企业固定资产净额作为资本投入的代理变量,企业所在城市的工业用电量根据企业从业人员占城市城镇人员就业比重进行换算作为能源投入的代理变量。 (2)期望产出:以企业的营业收入作为期望产出的代理变量。 (3)非期望产出:将企业从业人员占所在城市城镇人员就业比重与“工业三废”(即工业二氧化硫、工业废水、工业烟粉尘排放量)结合,进行换算,作为非期望产出的代理变量。 四、参考文献 崔立志,孙旺,黄敏敏.新能源示范城市建设对企业绿色全要素生产率的影响研究——基于A股上市公司的实证分析[J].广西财经学院学报,2023,36(01):92-104. 五、数据来源 数据来源于《中国城市统计年鉴》、《中国环境统计年鉴》、

57,062

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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