2025年Mysql表数据如何增加汇总统计行(GROUP BY WITH ROLLUP函数用法)

Mysql表数据如何增加汇总统计行(GROUP BY WITH ROLLUP函数用法)举例一 下面是一张 商品的售出情况汇总表 tb goods sale 表字段解释如下 目前表中有 3 条数据 如下图 我们利用 GROUP BY WITH ROLLUP 进行统计汇总商品的 售出总数 和 营销额 sql 如下 SELECT a goods name

大家好,我是讯享网,很高兴认识大家。

举例一:

下面是一张【商品的售出情况汇总表 tb_goods_sale】 ,表字段解释如下:


讯享网

目前表中有3条数据,如下图,我们利用GROUP BY WITH ROLLUP 进行统计汇总商品的【售出总数】和【营销额】

sql如下:

SELECT a.goods_name, sum( saled_count ) AS "售出数量", sum( a.saled_count * a.unit_price ) AS "营销额" FROM `tb_goods_sale` a GROUP BY a.goods_name WITH ROLLUP;

讯享网

输出结果:

我们发现最后汇总行少了名称,我们利用COALESCE做一个优化

讯享网SELECT COALESCE ( aa.goods_name, '汇总' ) AS "商品名称", aa.售出数量, aa.营销额 FROM ( SELECT a.goods_name, sum( saled_count ) AS "售出数量", sum( a.saled_count * a.unit_price ) AS "营销额" FROM `tb_goods_sale` a GROUP BY a.goods_name WITH ROLLUP ) aa;

输出结果如下:

举例二:

下面是一张【商品售出的明细表 tb_goods_sale_detail】,表字段解释如下:

 目前表中有6条数据,如下图,我们利用GROUP BY WITH ROLLUP 进行统计汇总商品的【售出总数】和【营销额】

 sql如下:

SELECT a.goods_name, count( * ) AS "售出数量", sum( a.price ) AS "营销额" FROM `tb_goods_sale_detail` a GROUP BY a.goods_name WITH ROLLUP;

输出结果如下:

 我们发现最后汇总行少了名称,我们利用COALESCE做一个优化

讯享网SELECT COALESCE ( aa.goods_name, '汇总' ) AS "商品名称", aa.售出数量, aa.营销额 FROM ( SELECT a.goods_name, count( * ) AS "售出数量", sum( a.price ) AS "营销额" FROM `tb_goods_sale_detail` a GROUP BY a.goods_name WITH ROLLUP ) aa;

输出结果如下:

举例三:

在举例二【商品售出的明细表 tb_goods_sale_detail】的基础上,我们再按销售日期进行统计,为了展示效果,我在表里造了其它日期的销售数据。

我们可以利用GROUP BY WITH ROLLUP 统计出各商品每天的【售出总数】和【营销额】。

 sql如下:

SELECT COALESCE ( aa.日期, '合计' ) 日期, aa.销售总数, aa.可乐, aa.薯片, aa.康师傅, aa.总营销额, aa.可乐营销额, aa.薯片营销额, aa.康师傅营销额 FROM ( SELECT DATE_FORMAT( a.sale_date, '%Y%m%d' ) 日期, COUNT( * ) 销售总数, COUNT( IF ( a.goods_name = '可乐', a.goods_name, NULL ) ) 可乐, COUNT( IF ( a.goods_name = '薯片', a.goods_name, NULL ) ) 薯片, COUNT( IF ( a.goods_name = '康师傅', a.goods_name, NULL ) ) 康师傅, SUM( a.price ) 总营销额, SUM( IF ( a.goods_name = '可乐', a.price, NULL ) ) 可乐营销额, SUM( IF ( a.goods_name = '薯片', a.price, NULL ) ) 薯片营销额, SUM( IF ( a.goods_name = '康师傅', a.price, NULL ) ) 康师傅营销额 FROM tb_goods_sale_detail a GROUP BY DATE_FORMAT( a.sale_date, '%Y%m%d' ) WITH ROLLUP ) aa;

输出结果如下:


小讯
上一篇 2025-04-04 18:02
下一篇 2025-03-31 22:15

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/48208.html