【发布时间】:2020-07-01 13:23:48
【问题描述】:
我有一个列,我试图在 MySQL 中将其转换为另一列,其模式是数据中存在连续的 1。请参阅下面的示例数据集
数据集示例:https://1drv.ms/x/s!ApGNZAoiMmX3gi9OR7SUxt3ou84v?e=tuSV7f
以下是我编写但无法使其工作的代码,任何建议都会有所帮助。
select rownum,result,movingsum,new_result
(select rownum,result,movingsum,
if(result_norm_max=0,0,if(movingsum=1,1,0)) as new_result
from
(select rownum,result,
sum(result) over (order by rownum rows between 2 preceding and current row) as movingsum
from mytable) a;
问题是,上面的代码没有返回所有所需逻辑所需的输出:
- 当结果列为 0 时 new_result 应为 0
- 当结果为 1 时,new_result = 1 但仅当前 2 个 new_result 为 0 时
任何关于我应该如何解决这个问题的建议都会很有用。 谢谢!
【问题讨论】:
-
记住 RDBMS 表中的行代表 无序 集,请参阅:Why should I provide an MCRE for what seems to me to be a very simple SQL query?
-
我添加了示例数据集
-
只有当问题是关于 Excel 时才这样
标签: mysql design-patterns sequence