mysql如何实现每隔N行生成一个汇总行
发布时间:2021-12-23 16:57:41 所属栏目:MySql教程 来源:互联网
导读:小编给大家分享一下mysql如何实现每隔N行生成一个汇总行,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 处理这种每隔N行生成一个汇总行的需求,一共有三种方式 select when
小编给大家分享一下mysql如何实现每隔N行生成一个汇总行,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 处理这种每隔N行生成一个汇总行的需求,一共有三种方式 select when c is null then '汇总' else '' end s,ifnull(c,sumc) c from ( select ceil(id/3) l,c,null sumc from ( select @id:=@id+1 id, t1.* from t t1,(select @id:=0) vars ) t2 union all select ceil(id/3) l,null,from ( select @id1:=@id1+1 id, t1.* from t t1,(select @id1:=0) vars ) t3 group by l ) t order by l,ifnull(c,'9999'); 结果: mysql如何实现每隔N行生成一个汇总行 第二招,数字辅助表补全. 性能较好. 计算汇总行,理解稍微复杂. 先增加一个数字辅助表 nums table(int null)delimiter $$ procedure pCreateNumscnt ) declare s default; truncate nums while s= intoselect; set=+; end; $$ ; create(intbegin int 1 table; insert nums s while s2= intoselect+from; set=*; end; $$ ; 初始化数字辅助表 select s,ifnull(c,cc) c from ( select when rn is null then '汇总' else '' end s, t4.c, if(mod(t3.id,4)!=0 ,when @total=-1 then @total:=t4.c else @total:=@total+t4.c end,@total) cc, when mod(t3.id,4)=0 then @total:=-1 else null end from ( select * from nums where id<= (select (ceil(from t ) ) t3 join ( select when mod(@rn+1,4)=0 then @rn:=@rn+2 else @rn:=@rn+1 end rn , t1.* from t t1,(select @rn:=0,@total:=0) vars ) t4 on(t3.id=t4.rn) ) result; 这个理解稍微有点复杂, 第二招改进版本 select when id is null then '汇总' else '' end s,from ( select @id:=@id+1 id, t1.* from t t1,(select @id:=0) vars ) t2 group by ceil(t2.id/3),t2.id with rollup; 以上是“mysql如何实现每隔N行生成一个汇总行”这篇文章的所有内容,感谢各位的阅读! (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |