【发布时间】:2021-02-23 00:48:46
【问题描述】:
请看看这个小提琴。
https://www.db-fiddle.com/f/71CxYHKkzwmXJnovzpFheV/7
我正在尝试完成两件事:
-
如何在没有任何跳过日期的情况下获得 LATEST STREAK OF CORRECT GUESSES(意思是 Result = Guess)的长度和日期?在这种情况下,它将是 4,从 2021-01-05 到 2021-01-08。 (虽然2021-01-03是正确的,但因为2021-01-04没有猜测,所以应该不包括在内)。
-
如何获得有史以来最长的连续正确猜测的长度和日期?再次表示结果 = 猜测,但可以在表中的任何位置。假设是 3 个月前的 10 个。
更复杂的是,可以由多个用户进行猜测,并且在同一天会有多个结果(例如针对不同的游戏类别)。所以上表是针对一个用户和一个游戏类别的。我认为如果我能就上述目标获得一些指导,我可以解决这个问题。
这超出了我的理解。任何和所有的帮助将不胜感激。
编辑:我更改了表格以显示日期并不总是连续的。另外,我被告知我应该使用 MySQL 8.0 来完成这个任务,因为使用变量不是解决这个问题的好习惯。
编辑:使用窗口函数,开始到达某处:
请检查小提琴。它非常接近我想要达到的值,但总列中的“4”应该是 1。换句话说,“总和”应该重新开始。不知道如何实现这一点,因为很明显窗口函数将根据条件进行分组,从而打破顺序,从而打破连胜。
更新:我根据@The Impaler 的要求更新了小提琴。这里的表格更能代表我实际使用的内容(仍然不准确,但更接近)。
由于这个新提琴更具代表性,我也将解释我的最终目标。我还想获得每种游戏类型的连胜记录。我一直在将给定日期的 game_type 结果与“社区”(基本上是所有用户)的猜测进行比较的方式是将所有用户在该日期的每个 game_type 的所有 0 和 1 相加,然后使用更大的作为 '猜测'。通过这种方式,我可以了解“社区”作为一个整体是如何运作的。这适用于个别日期,但我不确定是否要连续运行。
更新 2 所以这就是我所得到的:
https://www.db-fiddle.com/f/71CxYHKkzwmXJnovzpFheV/11
我试图做一个嵌套窗口函数,但这是不允许的。当猜测=结果时,我有正确的分组和列。现在我需要帮助找出组内的连续性。
【问题讨论】:
-
如果你有 MySQL 8.x,你应该可以使用窗口函数来做到这一点。
-
StackOverflow 不是免费的编码服务。你应该try to solve the problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
-
在过去的几个小时里,我实际上一直在做这件事。我已经尝试过分组、排序和限制,但无济于事。我已经搜索过,试图查看是否可以创建一个条件限制(例如“LIMIT WHEN 结果!= 猜测),这是不允许的。我没有发布任何尝试,因为没有什么能让我远程接近。我运行 MySQL 5.x,但我现在将研究 8.x。
-
您需要发布您的最佳尝试。我们不会为您编写它,但我们会帮助您了解您做错了什么以及如何解决它。
-
日期似乎总是连续的
标签: mysql