因此,我有一个有2列的表-项目和数量。列[项目]是唯一的,[数量]可以有相同的值。任务:从第一个表中创建另一个包含附加列cumulative_total的表。此列将[数量]列的值[在10和160之间]相加,但当cumulative_total达到160时,必须last_value [cumulative_total]= 160,并且last_value [数量]= 160-last_value [数量]。并且该列是将列[数量]的值[在0和9之间]相加,但是当cumulative_total达到40时,您必须last_value [累计总数]= 40,并且last_value [数量]= 40-last_value [数量]。当满足此条件时,任务完成。
表
| 项目|数量|
| - ------|- ------|
| 第137/30号决议|十个|
| 第167/20号决议|十个|
| 167/30|三十|
| 二十三/三十|二十个|
| 第232/25号决议|三十三|
| 第236/20号决议|二十个|
| 第236/30号决议|三十|
| 第237/30号决议|三十|
| 第238/30号决议|二十个|
| 第241/20号决议|一百二十六|
| 第241/30号决议|三十|
| 第241/40号决议|八个|
| 二十五/三十|六个|
| 第251/30号决议|六个|
| 第254/30号决议|十个|
| 二十七○/三十|六个|
| 第三十三届会议|六个|
| 第342/40号决议|八个|
| 35/20|七|
| 36/20|八个|
| 三十八/二十|四个|
| 三十九/三十|四个|
| 第390/30号决议|四十|
| 小行星390/40|三十|
| 42/30|二十个|
| 四十四/三十|二十个|
| 四十五/三十|六个|
| 46/30|二十个|
| 第五十四届会议|二十三|
| 第五十九届会议|三十二|
| 六十八/三十|八个|
| 九十五/三十|九十四|
| 九七/三十|十个|
预期表:
| 项目|数量|累计总数|
| - ------|- ------|- ------|
| 第241/20号决议|一百二十六|一百二十六|
| 九十五/三十|三十四|一百六十|
| 第241/40号决议|八个|八个|
| 第342/40号决议|八个|十六|
| 36/20|八个|二十四|
| 六十八/三十|八个|三十二|
| 35/20|七|三十九|
| 二十五/三十|1个|四十|
如果需要,您可以下载. csv文件-link
我停在这一刻-
| 项目|数量|累计总数|
| - ------|- ------|- ------|
| 第241/20号决议|一百二十六|一百二十六|
| 九十五/三十|三十四|一百六十|
| 第241/40号决议|八个|八个|
| 第342/40号决议|八个|十六|
| 36/20|八个|二十四|
| 六十八/三十|八个|三十二|
| 35/20|七|三十九|
代码:
Drop table if exists SecondTable;
CREATE temporary table SecondTable(
Item varchar(64),
quantity int,
cumulative_total int not null
);
INSERT INTO `SecondTable`
select *
from (
select
item,
quantity - greatest(0, sum(quantity) over (ORDER BY quantity DESC) - 160) as quantity,
least(sum(quantity) over (ROWS between unbounded preceding and current row),160) as cumulative_total
from prak
WHERE quantity BETWEEN 10 AND 159
) cumulative
where quantity > 0;
INSERT INTO `SecondTable`
SELECT *
FROM(
SELECT *,
SUM(quantity) OVER (ORDER BY quantity DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumulative_total
FROM prak
WHERE quantity < 10 ) as maxs
WHERE cumulative_total < 40 OR cumulative_total = 40;
Select @maxt := max(cumulative_total) from SecondTable;
Select *
from
SecondTable
1条答案
按热度按时间rxztt3cl1#
谢谢大家