零基础学SQL(九、分组 GROUP BY)
目录
前置建表
编辑
一、分组的概念
二、分组案例
三、分组的过滤HAVING子句
前置建表
CREATE TABLE student (id int NOT NULL AUTO_INCREMENT COMMENT '主键',code varchar(255) NOT NULL COMMENT '学号',name varchar(255) DEFAULT NULL COMMENT '姓名',sex enum('男','女') DEFAULT NULL COMMENT '性别',age int(0) NULL COMMENT '年龄',PRIMARY KEY (`id`)
);INSERT INTO `test`.`student`(`id`, `code`, `name`, `sex`, `age`) VALUES (1, '20220101', '张三', '男', 12);
INSERT INTO `test`.`student`(`id`, `code`, `name`, `sex`, `age`) VALUES (2, '202202', '李四', '男', 14);
INSERT INTO `test`.`student`(`id`, `code`, `name`, `sex`, `age`) VALUES (3, '202203', '王五', '女', 10);
INSERT INTO `test`.`student`(`id`, `code`, `name`, `sex`, `age`) VALUES (4, '202204', '张三飞', '男', 20);
INSERT INTO `test`.`student`(`id`, `code`, `name`, `sex`, `age`) VALUES (5, '202205', '小丽', '女', 10);
INSERT INTO `test`.`student`(`id`, `code`, `name`, `sex`, `age`) VALUES (6, '202206', '小明', '男', 11);
数据如下
一、分组的概念
有时需要在数据中找到变化的趋势,这就需要数据库服务器在产生所需要的结果集之前对数据进行一些加工。这时可以使用group by子句请求数据库服务器对数据进行分组。
二、分组案例
SELECT a.sex,count(1) from student a GROUP BY a.sex ; -- 根据性别分组,查看男女各有多少人
SELECT a.age,count(1) from student a GROUP BY a.age ; -- 根据年龄分组,查看各个年龄有多少人
当然GROUP BY还可以结合函数,case when等语法实现分组,如以下案例
SELECT CASE WHEN a.age>12 THEN'大于12岁'ELSE'小于等于12岁'
END 条件,count(1) from student a GROUP BY CASE WHEN a.age>12 THEN'大于12岁'ELSE'小于等于12岁'
END ; -- 查询大于12岁和小于等于12岁有多少人
如果获取分组信息之后,还需要获取汇总值,则可以结合WITH ROLLUP关键字来实现
SELECT a.age,count(1) from student a where age<15 GROUP BY a.age HAVING count(1)=1 ; -- 筛选出年龄小于15的数据,根据年龄分组,查看各个年龄有多少人
三、分组的过滤HAVING子句
SELECT a.sex,count(1) from student a GROUP BY a.sex HAVING count(1)>2; -- 根据性别分组,获取分组之后count大于2的数据
SELECT a.age,count(1) from student a where age<15 GROUP BY a.age HAVING count(1)=1 ; -- 筛选出年龄小于15的数据,根据年龄分组,查看各个年龄有多少人
零基础学SQL(九、分组 GROUP BY)相关推荐
- 零基础学SQL(1):初识数据库与SQL
零基础学SQL(1):初识数据库与SQL 一.初识数据库 数据库是将大量数据保存起来,通过计算机加工而成的可以 进行高效访问的数据集合.该数据集合称为数据库(Database,DB).用来管理数据库的 ...
- 零基础学sql要多久_成人零基础学习钢琴,要多久能学会?
越来越多的人都开始在开始工作之后想要练习一门技艺了.不知道大家身边的朋友是不是也在报一些培训班,健身班,瑜伽班,舞蹈班.每个人都有自己向往的生活与目标,那学会钢琴,也慢慢变成了更多喜爱音乐的朋友的目标 ...
- 零基础学sql要多久_零基础小白如何迈出学习SQL的第一步?文科生学SQL的心得
本文适用对象:从没接触过编程的零基础小白 首先,判断是否需要学习SQL 学习的第一步:了解SQL的用途. 比如你的目的是处理小量数据,那么excel就能满足需求,且excel简单易学,适用性广,这种情 ...
- 零基础学SQL(十一、视图)
目录 前置建表 一.什么是视图 二.为什么使用视图 三.视图的规则和限制 四.视图的增删改查 五.视图数据的更新 前置建表 CREATE TABLE student (id int NOT NULL ...
- 零基础学SQL(十、子查询与多表关联)
目录 前置建表 编辑 编辑 一.子查询 1.什么是子查询 2.子查询的类型 二.表关联查询 1.连接分类 1.1.交叉连接 (CROSS JOIN) 1.2.内连接(inner join) ...
- 零基础学SQL(二、MYSQL数据类型)
目录 一.数据类型 一.数值型数据 1.整数类型 2.小数类型 二.字符串类型 1.char 2.VARCHAR 3.BLOB和TEXT类型 三.日期和时间类型 四.枚举类型 五.set类型 一.数据 ...
- 零基础学SQL(四、可视化工具连接数据库、数据库创建及删除)
目录 一.使用Navicat链接MYSQL 二.创建数据库 1.创建数据库的命令 2.删除数据库 删库需谨慎 3.修改数据库名称 三.可视化工具操作 1.创建数据库 2.删除数据库 删库需谨慎 一. ...
- 零基础学SQL(十三、事务)
目录 前置建表 编辑 一.什么是事务 二.事务特性ACID 1.原子性(Atomicity) 2.一致性(Consistency) 3.隔离性(Isolation) 4.持久性(Durabilit ...
- 零基础学SQL(六、数据的增删改查简单语句)
目录 前置建表 一.数据的插入 1.插入数据语法 1.1.插入完整的行 1.2.插入行的一部分 1.3 .插入多行 1.4.插入某些查询的结果 二.数据的简单查询 1.查询数据语法 三.数据的修改 1 ...
最新文章
- clouderamanager-server启动,log日志中说需要mysql驱动的解决办法
- struts2的配置
- P1198 [JSOI2008]最大数
- MV* 框架 与 DOM操作为主 JS库 的案例对比
- linux——shell 中的变量
- 超实用资源,SCI写作到投稿全阶段模板
- 警惕技术人员的极端性
- 如何在六个月或更短的时间内成为DevOps工程师(一)
- 正在东京、首尔开DevDays
- 添加roster好友 命令
- 产品研发过程管理专题——软件测试过程管理实践
- mui获取css参数,Mui-获取时间-调用手机api
- 【Tensor】(张量)的基本概念和操作
- 【ZT】可行性研究报告编写规范
- 蓝桥杯真题:外卖优先级
- ArcGIS实验教程——实验四十三:ArcGIS栅格重分类(Reclass)案例详解
- 毫米和像素怎么换算_像素和厘米怎么换算?
- 最大公约数与最小公倍数的求法
- 为什么称冯诺依曼为电子计算机之父,为什么说冯诺依曼是现代电子计算机之父...
- 读应届生论坛的“职业生涯步步高:一位资深经理人的职业生涯感悟”之一