如果我有一个如下所示的SQL表,该如何计算当前的赢或输连胜(以及按季节对赢/输连胜进行分组/重置)。我想更新表并为每条记录填写条纹。
因此,对于#1,条纹将为“ -1”,#2将为“ 1”,#3将为“ 2”,但是一旦我们降至#7,它将再次重置为“
1”。(+1表示“赢得1场比赛”,-1表示“失去1场比赛”,依此类推。)
ID team date Result season streak
1 76ers 2000-01-01 Loss 2000 Null
2 76ers 2000-01-05 Win 2000 Null
3 76ers 2000-01-08 Win 2000 Null
4 Lakers 2000-01-03 Loss 2000 Null
5 Lakers 2000-01-07 Loss 2000 Null
6 Lakers 2000-01-01 Win 2000 Null
7 76ers 2002-03-01 Win 2001 Null
8 76ers 2002-03-05 Win 2001 Null
9 76ers 2002-03-08 Loss 2001 Null
10 Lakers 2002-03-03 Loss 2001 Null
11 Lakers 2002-03-07 Loss 2001 Null
12 Lakers 2002-03-01 Win 2001 Null
对于每个游戏,计算与之前结果相同的游戏,这样就不会有中间结果相反的游戏。将结果存储在临时表中:
CREATE TEMPORARY TABLE STREAK_TABLE
SELECT
ID,
(
SELECT 1 + COUNT(*) -- Earlier games with the same result, team and season.
FROM YOUR_TABLE T2
WHERE
T1.Result = T2.Result
AND T1.team = T2.team
AND T1.season = T2.season
AND T1.date > T2.date
AND NOT EXISTS (
SELECT * -- The games in between, with the same team and season but opposite result.
FROM YOUR_TABLE T3
WHERE
T2.Result <> T3.Result
AND T1.team = T3.team
AND T1.season = T3.season
AND T3.date BETWEEN T2.date AND T1.date
)
) S
FROM YOUR_TABLE T1
然后,更新原始表(并消除该过程中的丢失条纹):
UPDATE YOUR_TABLE
SET streak = (
SELECT CASE Result WHEN 'Win' THEN S ELSE -S END
FROM STREAK_TABLE
WHERE STREAK_TABLE.ID = YOUR_TABLE.ID
)
最后,清理临时表:
DROP TABLE STREAK_TABLE
这很可能是一个寻找问题的解决方案。。。如果是这样,我请求你的原谅 可能的实施: 这样的解释是:如果计算成功,就让它失败;如果计算失败,就让它成功。我不确定,但这似乎有点像MonadPlus的反面。。。如果你眯起眼睛真的很难??? 这个概念有没有标准的typeclass或其他实现?如果有的话,底层的数学是什么样的(例如,这是一个半群、一个循环等)?
我有一个未来[T],我想在成功和失败上映射结果。 比如说 如果我使用< code>map或< code>flatmap,它将只映射成功的未来。如果我使用< code>recover,它将只映射失败的期货。< code>onComplete执行回调,但不返回修改后的未来值。< code>Transform可以工作,但是需要两个函数而不是一个部分函数,所以有点难看。 我知道我可以做出一个新的,并用或/
我有下面的伪代码,它在一个hasmap中将一系列的双精度码保存到一个特定的键,我希望能够使用这个缓冲区来计算每个键的平均值。 我现在想计算一个简单的平均值 它返回“不兼容类型:lambda表达式中的错误返回类型,无法转换为Double。我尝试了不使用maptoDOuble的方法,但没有得到avg()方法。有人知道为什么这样做不起作用吗
我实现了以下代码来处理我未来的完成,它编译得很好 我对它的工作原理有点困惑,我假设它确实如此,因为我从Scala文档中的类似示例中复制了它 我知道onComplete需要一个函数,该函数将尝试作为输入,成功和失败都是从尝试扩展而来的case类 我不明白的是,如果不首先进行某种类型的匹配,你怎么能在这些情况下进行。 这怎么可能在这里?
我正在尝试使用Web客户端创建REST调用 我只想记录通话结果。成功时 - 使用响应正文记录成功消息,在 5XX 或超时或其他时 - 记录错误消息。日志应该在后台创建(而不是由创建调用的线程创建)但是每次都会执行,工作正常,但也有 记录在日志文件中。 我也在一些教程中看到过方法,但在我的设置中有这样的方法。 如何记录成功和失败消息?
问题内容: 以前,在Rails 2.3.8中,我使用了原型帮助器和(以及其他)。 这些选项如下: (来自文档的示例)。此示例将在成功后用类“ cart”更新html元素,而在失败时将类“ error”更新。 现在我相信操作方式已经改变,我们写: 并且没有设置选项了。现在,代替普通的html,我们渲染javascript,如下所示(在jquery中): 但是您如何处理错误情况?我可以在控制器中处理它