写点什么

《零基础》MySQL GROUP BY 语句 (十九),java 并发编程实战 pdf 百度云

作者:Java高工P7
  • 2021 年 11 月 10 日
  • 本文字数:1213 字

    阅读完需:约 4 分钟

CREATE TABLE `employee_tbl` (


`id` int(11) NOT NULL,


`name` char(10) NOT NULL DEFAULT '',


`date` datetime NOT NULL,


`singin` tinyint(4) NOT NULL DEFAULT '0' COMMENT '登录次数',


PRIMARY KEY (`id`)


) ENGINE=InnoDB DEFAULT CHARSET=utf8;




-- Records of `employee_tbl`




BEGIN;


INSERT INTO `employee_tbl` VALUES ('1', '小明', '2016-04-22 15:25:33', '1'), ('2', '小王', '2016-04-20 15:25:47', '3'), ('3', '小丽', '2016-04-19 15:26:02', '2'), ('4', '小王', '2016-04-07 15:26:14', '4'), ('5', '小明', '2016-04-11 15:26:40', '4'), ('6', '小明', '2016-04-04 15:26:54', '2');


COMMIT;


SET FOREIGN_KEY_CHECKS = 1;


导入成功后,执行以下 SQL 语句:


mysql> set names utf8;


mysql> SELECT * FROM employee_tbl;


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


+----+--------+---------------------+--------+


| id | name | date | singin |


+----+--------+---------------------+--------+


| 1 | 小明 | 2016-04-22 15:25:33 | 1 |


| 2 | 小王 | 2016-04-20 15:25:47 | 3 |


| 3 | 小丽 | 2016-04-19 15:26:02 | 2 |


| 4 | 小王 | 2016-04-07 15:26:14 | 4 |


| 5 | 小明 | 2016-04-11 15:26:40 | 4 |


| 6 | 小明 | 2016-04-04 15:26:54 | 2 |


+----+--------+---------------------+--------+


6 rows in set (0.00 sec)


接下来我们使用 GROUP BY 语句 将数据表按名字进行分组,并统计每个人有多少条记录:


mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name;


+--------+----------+


| name | COUNT(*) |


+--------+----------+


| 小丽 | 1 |


| 小明 | 3 |


| 小王 | 2 |


+--------+----------+


3 rows in set (0.01 sec)

使用 WITH ROLLUP

WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。


例如我们将以上的数据表按名字进行分组,再统计每个人登录的次数:


mysql> SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;


+--------+--------------+


| name | singin_count |


+--------+--------------+


| 小丽 | 2 |


| 小明 | 7 |


| 小王 | 7 |


| NULL | 16 |


+--------+--------------+


4 rows in set (0.00 sec)


其中记录 NULL 表示所有人的登录次数。


我们可以使用 coalesce 来设置一个可以取代 NUll 的名称,coalesce 语法:


select coalesce(a,b,c);


参数说明:如果 a==null,则选择 b;如果 b==null,则选择 c;如果 a!=null,则选择 a;如果 a b c 都为 null ,则返回为 null(没意义)。


以下实例中如果名字为空我们使用总数代替:


mysql> SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
《零基础》MySQL GROUP BY 语句(十九),java并发编程实战pdf百度云