相关文章推荐
严肃的钱包  ·  sql 统计7天内 ...·  5 月前    · 
热心的大熊猫  ·  python怎么爬js网站 ...·  1 年前    · 
乐观的春卷  ·  SQlServer 日期格式 ...·  1 年前    · 
机灵的皮带  ·  Oracle declare begin ...·  1 年前    · 

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

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

sql如下:

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

输出结果如下:

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

SELECT COALESCE
	( aa.goods_name, '汇总' ) AS "商品名称",
	aa.售出数量,
	aa.营销额 
SELECT
	a.goods_name,
	count( * ) AS "售出数量",
	sum( a.price ) AS "营销额" 
	`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.康师傅营销额 
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 ) ) 康师傅营销额 
	tb_goods_sale_detail a 
GROUP BY
	DATE_FORMAT( a.sale_date, '%Y%m%d' ) WITH ROLLUP 
	) aa;

输出结果如下:

举例一:下面是一张【商品的售出情况汇总表】 ,表字段解释如下:目前表中有三条数据,我们利用GROUP BYWITH 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..   每天一早到公司,第一件事就是打开各种报 ,查看平台运 情况。到了周末,睡完懒觉还是得爬起床远程回公司看报 数据 。于是在周末的时候,将娃哄睡之后,开始着手写一下 统计 sql ,定期执 后将结果 汇总 推送到企业微信。   问题就出现在“ 汇总 ”这个事。众所周知 sql group by 能 分组 统计 ,但是分组后还得再执 一次 sql 将结果 汇总 一遍,才能将分组 统计 结果加起来。如下面的 SQL : select status, count(1) from action_history where create_
文章目录1. 分组 查询 介绍2. group by的使用根据gender字段来分组根据age字段分组、with rollup 的初步使用根据name和gender多个字段进 分组3. group by + group _concat()的使用4. group by + 聚合 函数 的使用5. group by + having的使用6. group by + with rollup 的使用7. 小结 1. 分...
汇总 数据 有时对 数据 的操作不是 数据 本身,而是 数据 汇总 ,例如 某一列 数据 的平均值,最大值,最小值等。而对于这些常用的 数据 汇总 处理, MySQL 提供了 函数 来处理。 SQL 聚集 函数 启动 数据库 :\> net start mysql 连接 数据库 :\> mysql -h127.0.0.1 -uroot -p123456 断开连接:\> exit;或者quit; 停止服务:\> net stop mysql 创建 数据库 :\> create database db_admin; 查看所有 数据库 :\&g
WITH ROLLUP :WITH POLLUP关键字用来在所有记录的最后加上一条记录,这条记录是上面所有记录的总和,即 统计 记录数量。也就是在 group 分组字段的基础上再进 统计 数据 。 使用: GROUP BY 分组与 WITH ROLLUP 使用
MySQL 中, GROUP BY 是分组聚合 函数 ,用于将 数据 按照某个列分组,然后对每个分组进 聚合计算。而 WITH ROLLUP 则是一个扩展语法,它可以对 GROUP BY 的结果集进 汇总 计算。 具体来说, GROUP BY 可以将 数据 按照指定列分组,然后对每个分组进 聚合计算,比如 求和 、平均值等。而 WITH ROLLUP 则可以在 GROUP BY 的基础上,对每个分组的聚合结果进 汇总 计算,得到一个总计 。 举个例子,假设有一个订单 ,包含订单号、客户、商品、数量和金额等字段。现在我们想要按照客户分组, 统计 每个客户的订单数和订单总金额,并且还要在结果集中添加一 总计。我们可以使用如下 SQL 语句: SELECT 客户, COUNT(订单号) AS 订单数, SUM(金额) AS 订单总金额 FROM 订单 GROUP BY 客户 WITH ROLLUP ; 这样, 查询 结果就会返回每个客户的订单数和订单总金额,以及总计 ,其中客户列为空 示总计 。 总之, GROUP BY 和 WITH ROLLUP 都是用于聚合计算的语法,但 GROUP BY 是必须的,而 WITH ROLLUP 则是可选的,用于对 GROUP BY 的结果集进 汇总 计算。