当前位置:   article > 正文

MySQL学习整理(GROUP BY 语句)_mysql如何group by sum所有列

mysql如何group by sum所有列

 一、简介

  • GROUP BY 语句根据一个或多个列对结果集进行分组。
  • 在分组的列上我们可以使用 COUNT, SUM, AVG 等函数

二、语法

  1. SELECT queryitem, function(queryitem)
  2. FROM table
  3. WHERE ...
  4. GROUP BY queryitem;

语法解析:

  • queryitem1 排序列,可以多个
  • function 方法,如:COUNT, SUM, AVG

三、实例演示(结合 WITH ROLLUP 使用)

3.1、导入数据

  1. -- 创建表
  2. CREATE TABLE `test` (
  3. `id` int(11) NOT NULL AUTO_INCREMENT,
  4. `name` varchar(20) COLLATE utf8mb4_bin DEFAULT '姓名',
  5. `sign_in_date` datetime DEFAULT NULL COMMENT '签到时间',
  6. `sign_in_count` int(11) DEFAULT 1 COMMENT '签到次数',
  7. PRIMARY KEY (`id`)
  8. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
  9. -- 插入数据
  10. INSERT INTO `test`(name, sign_in_date, sign_in_count)
  11. VALUES
  12. ('小明', '2021-11-22 00:00:00', 1),
  13. ('小王', '2021-11-22 00:00:00', 2),
  14. ('小丽', '2021-11-22 00:00:00', 3),
  15. ('小明', '2021-11-23 00:00:00', 4),
  16. ('小王', '2021-11-23 00:00:00', 5),
  17. ('小丽', '2021-11-23 00:00:00', 6),
  18. ('小明', '2021-11-24 00:00:00', 7),
  19. ('小王', '2021-11-25 00:00:00', 8),
  20. ('小明', '2021-11-26 00:00:00', 9);

效果图:

3.2、查询打卡天数

  1. -- 打卡天数
  2. SELECT NAME, count(1) FROM test GROUP BY NAME;

效果:

3.3、查询打卡次数(WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…))

  1. -- 打卡次数
  2. SELECT NAME, SUM( sign_in_count ) AS countSum FROM test GROUP BY NAME WITH ROLLUP;

效果(其中 NAME IS NULL 表示所有人的登录次数《总登陆次数》):

3.4、coalesce 替换 3.2 中的 NUll 的名称

  1. -- 打卡次数
  2. SELECT COALESCE( NAME, '总数' ), SUM( sign_in_count ) AS countSum FROM test GROUP BY NAME WITH ROLLUP;

效果:

注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/986649
推荐阅读
相关标签
  

闽ICP备14008679号