作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 table
id sum type
1 3 -1
1 6 -1
1 -6 2
1 -3 1
1 3 -1
1 6 -1
这些
1 3 -1
是空行。类型始终为 -1。总和可以不同。
这些
1 -6 2
是封闭的行。输入 != -1。 sum = -sum for open row
这些行
1 3 -1
1 6 -1
1 -6 2
1 -3 1
会互相否定。这些
1 3 -1
1 6 -1
会留下来。如果最后打开的行数超过 15,那么对于每个打开的行,我需要在表中插入一行,其中 sum 是打开行的总和,类型是 2。
分组
select id
, sum
, sum(
case
when type = -1 then 1
when type != -1 then -1
else 0
end
) as num
from table
group by id, sum
id sum num
1 3 2
1 6 2
1 -6 2
1 -3 1
可能会帮助我找到组合。但是我不知道之后该怎么办。
最佳答案
select t.val_id
,t.val_sum
,2 as val_type
from (select val_id
,-abs (val_sum) as val_sum
,sum (case when val_type = -1 then 1 else -1 end) as occurrences
from mytable
group by val_id
,abs (val_sum)
having sum (case when val_type = -1 then 1 else -1 end) > 15
) t
lateral view explode (split (space (cast (occurrences as int) - 1),' ')) e
;
关于sql - 如果超过 15 行,则向表中插入与打开行数相等的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42207267/
我是一名优秀的程序员,十分优秀!