使用mysql表

时间:2017-09-27 10:56:55

标签: mysql sql

mysql中的表mytable具有列col1和col2,其中整数非空值。它还有一个主键id。在按特定顺序排列列之后,我需要计算列col1col2的所有元素中的某个总和,如下所示:对于给定行中col2中的给定值,将其与col1在下一行的值。取这两个值中较小的一个,并从中减去col2取值的行中col1的值;对于最后一行,只需从col2中的值中减去该行中col1中的值。得到所有这些差异的总和。

我有以下解决方案似乎有效但可能会干扰用户缺少创建表或更改表结构的权限。它需要在创建表和一些列之前检查它们是否存在,除了需要在运行后清理之外,还要删除添加的列。

alter table mytable  add my_id int(5) not null;
alter table mytable add col3 int(7) not null;

SET @count = 0;
UPDATE mytable  SET my_id = @count:= @count + 1;

create temporary table mytable2 as select my_id, col1 from mytable  limit 1, 99999;
update mytable a join mytable2 b on a.my_id = (b.my_id - 1) set a.col3 = b.col1;

update mytable set col3 = col2 order by my_id desc limit 1;

select sum(LEAST(col2,col3) - col1) from mytable;

问题:获得上述所需金额的更好方法是什么?

以下是一些示例数据:

           id   col1    col2
         --------------------
           11   609     618
           42   620     628
           23   624     630
           34   627     637

Required Sum: (618-609) + (624-620) + (627-624) + (637-627) = 26

0 个答案:

没有答案