分享更有价值
被信任是一种快乐

mysql如何实现每隔N行生成一个汇总行

文章页正文上

小编给大家分享一下mysql如何实现每隔N行生成一个汇总行,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

处理这种每隔N行生成一个汇总行的需求,一共有三种方式

selectwhencisnullthen’汇总’else”ends,ifnull(c,su免费主机域名mc)cfrom(selectceil(id/3)l,c,nullsumcfrom(select@id:=@id+1id,t1.*fromtt1,(select@id:=0)vars)t2unionallselectceil(id/3)l,null,from(select@id1:=@id1+1id,t1.*fromtt1,(select@id1:=0)vars)t3groupbyl)torderbyl,ifnull(c,’9999′);结果:第二招,数字辅助表补全. 性能较好. 计算汇总行,理解稍微复杂.先增加一个数字辅助表 numstable(intnull)delimiter $$
procedure pCreateNumscnt)
declare sdefault;
truncatenumswhile s=intoselect;
set=+;
end;
$$
;

create(intbegin
int1table;
insertnumsswhile s2=intoselect+from;
set=*;
end;
$$
;初始化数字辅助表selects,ifnull(c,cc)cfrom(selectwhenrnisnullthen’汇总’else”ends,t4.c,if(mod(t3.id,4)!=0,when@total=-1then@total:=t4.celse@total:=@total+t4.cend,@total)cc,whenmod(t3.id,4)=0then@total:=-1elsenullendfrom(select*fromnumswhereid(select(ceil(fromt))t3join(selectwhenmod(@rn+1,4)=0then@rn:=@rn+2else@rn:=@rn+1endrn,t1.*fromtt1,(select@rn:=0,@total:=0)vars)t4on(t3.id=t4.rn))result; 这个理解稍微有点复杂,第二招改进版本selectwhenidisnullthen’汇总’else”ends,from(免费主机域名select@id:=@id+1id,t1.*fromtt1,(select@id:=0)vars)t2groupbyceil(t2.id/3),t2.idwithrollup;以上是“mysql如何实现每隔N行生成一个汇总行”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注云技术行业资讯频道!

相关推荐: mysql中GTID报错怎么办

这篇文章主要介绍了mysql中GTID报错怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. 在master 上删除一条记录,而slave 上找不到。2:第二种:主键重复。在slave已经…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册