mysql - 如何使用 mySQL 按团队和结果检查条纹?
问题描述
我创建了一个包含比赛 ID、团队、结果(使用“W”、“D”、“L”)和日期的视图。例如:
'32750', 'Team 1', 'D', '2019-02-16 21:30:00'
'32750', 'Team 2', 'D', '2019-02-16 21:30:00'
'32748', 'Team 3', 'L', '2019-02-16 19:20:00'
'32748', 'Team 4', 'W', '2019-02-16 19:20:00'
我调整了我在此处找到的查询,该查询使用该表计算连胜,并向我显示团队、连胜的开始日期、结束日期、连胜计数以及该连胜中包含的匹配项。
'Team 1', '1992-07-05', '1992-09-06', '5', '9522,9142,9161,9167,9180'
我遇到的问题是我必须在 where 子句中包含团队名称,否则查询显示不正确的结果。这是我用于 Winning Streaks 的查询
select
team_name,
min(match_date) as start_date,
max(match_date) as end_date,
count(match_date) as streak,
group_concat(idmatch) as gameid_list
from
(
select *,
IF(
result = "W"
and
@result = "W",
@gn, @gn := @gn + 1)
as group_number,
@match_date as old_date, @idmatch as old_gameid,
@result as old_rersult,
@match_date := match_date, @idmatch := idmatch,
@result := result
from my_football_database.`Resultados Globales WDL`
cross join
(
select
@match_date := CAST(null as date) as xa,
@idmatch := null + 0 as xb,
@result := null + 0 as xc, @gn := 0
) x where team_name = "Team 1"
order by match_date
) as y
group by group_number
order by streak desc;
如您所见,我必须在 where 子句中指定球队的名称,所以如果我想获得历史上前 3 名的连胜记录,我必须为每个球队运行此查询 150 次,然后手动比较.
我怎样才能修改它以获得按团队正确分组的完整的条纹列表?
解决方案
推荐阅读
- javascript - 如何使用两个分开的图像上传预览?
- json - 如何检测 JSON 对象内的变化?
- c++ - 复制分配功能如何访问另一个对象的私有成员(Stroustroup 原则和实践书籍)?
- laravel - Php7.3 参数必须是数组或者实现了Countable的对象
- javascript - componentDidMount 中的异步函数在第二次挂载时不起作用
- nested - 如何使用带有嵌套对象的 Commercetools SphereJsonUtils.readObjects 将 JsonNode 映射到 java 对象?
- wpf - 如何在窗口 WPF 中包含一些用户控件?
- amazon-web-services - 如何从 RDS 集群中进行 SELECT 或如何使用 RDS 集群配置数据管道?
- reactjs - Why is my state not updating after useDispatch
- python - 计算矩阵中的所有余弦相似度