测试必备的Mysql常用sql语句系列

https://www.cnblogs.com/poloyy/category/1683347.html

前言

  • group by 关键字可以根据一个或多个字段对查询结果进行分组
  • group by 一般都会结合Mysql聚合函数来使用
  • 如果需要指定条件来过滤分组后的结果集,需要结合 having 关键字;原因:where不能与聚合函数联合使用

group by 的语法格式

GROUP BY  <字段名>[,<字段名>,<字段名>]

确认测试表里有什么数据,方便后面的栗子做对比

group by 单字段分组的栗子

对sex单个字段进行分组查询

select * from yyTest group by sex;

知识点

分组之后,只会返回组内第一条数据;具体原理可以看看下图

group by 多字段分组的栗子

先按照age进行分组,然后再在每个组内按department分组

select * from yyTest group by age,department;

知识点

  • 多个字段分组查询时,先按照第一个字段分组,如果第一个字段有相同值,则把分组结果再按第二个字段进行分组,以此类推
  • 如果第一个字段每个值都是唯一的,则不会按照第二个字段再进行分组了,具体原理可看下图

group by + group_concat()的栗子

group_concat()可以将分组后每个组内的值都显示出来

select department,group_concat(username) as "部门员工名字" from yyTest group by department;

可以看到,按department部门分组 ,然后查看每个部门都有哪些员工的名字;还是很便捷的

group by +聚合函数的栗子

有什么聚合函数?

  • count():统计记录的条数
  • sum():字段值的总和
  • max():字段值的最大值
  • min():字段值的最小值
  • avg():字段值的平均值

具体的栗子

# count统计条数
select count(*) from yyTest group by department; # sum总和
select sum(age) from yyTest group by department; # max最大值
select max(age) from yyTest group by department; # min最小值
select min(age) from yyTest group by department; # 平均值
select avg(age) from yyTest group by department;

group by + with rollup的栗子

with rollup用来在所有记录的最后加上一条记录,显示上面所有记录每个字段的总和(不懂的直接看栗子)

select GROUP_CONCAT(username) from yyTest group by department with rollup;

select sum(age) from yyTest group by department with rollup;

select count(*) from yyTest group by department with rollup ;

ysql常用sql语句(12)- group by 分组查询的更多相关文章

  1. Mysql常用sql语句(3)- select 查询语句基础使用

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 针对数据表里面的每条记录,select查询语句叫 ...

  2. Mysql常用sql语句(20)- 子查询重点知识

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 子查询语句可以嵌套在 sql 语句中任何表达式出现的位 ...

  3. Oracle常用sql语句(三)之子查询

    子查询 子查询要解决的问题,不能一步求解 分为: 单行子查询 多行子查询 语法: SELECT select_list FROM table WHERE expr operator (SELECT s ...

  4. Mysql常用sql语句(13)- having 过滤分组结果集

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

  5. oracle常用SQL语句(汇总版)

    Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, ...

  6. oracle 常用sql语句

    oracle 常用sql语句 1.查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_sizefrom d ...

  7. Oracle数据库常用Sql语句大全

    一,数据控制语句 (DML) 部分 1.INSERT  (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……); INSE ...

  8. 一些常用SQL语句大全

    一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...

  9. 常用SQL语句大全

    一些常用SQL语句大全   一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql se ...

随机推荐

  1. Salesforce考试 | 如何维护我的Salesforce认证

    问题1 Salesforce证书是需要每年维护吗? Salesforce每年会发布3次Realese,分别是Spring.Summer和Winter,可以理解为一年3次的系统新版本更新,每次Relea ...

  2. Extjs——简单的Grid panel小实例

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  3. L13过拟合欠拟合及其解决方案

    过拟合.欠拟合及其解决方案 过拟合.欠拟合的概念 权重衰减 丢弃法 模型选择.过拟合和欠拟合 训练误差和泛化误差 在解释上述现象之前,我们需要区分训练误差(training error)和泛化误差(g ...

  4. java中如何理解:其他类型 + string 与 自增类型转换和赋值类型转换

    java中如何理解:其他类型 + string 与 自增类型转换和赋值类型转换 一.字符串与其他类型连接 public class DemoString{ public static void mai ...

  5. 如何在Ubuntu 18.04上安装Nginx

    Nginx功能之强大,想必大家比我更清楚. 百度百科:Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.Nginx是由伊戈尔 ...

  6. .NET Core3.1总体预览和第一个Core程序的创建

    小伙伴们大家好!欢迎阅读本贴,这里是常哥说编程的专栏,.NetCore已经出来一段时间了,很多小伙伴可能也开始了学习,但是.NetCore毕竟在学习上和我们常用的.NET Framework还是有很大 ...

  7. 6. webRTC

    webrtc网上封装的很多,demo很多都是一个页面里实现的,今天实现了个完整的 , A 发视频给 B. 1.) A 方 <!DOCTYPE html> <html id=" ...

  8. [javascript]JS获取当前时间戳的方法

    JavaScript 获取当前时间戳: 第一种方法:(这种方法只精确到秒) var timestamp = Date.parse(new Date()); 结果:1280977330000 第二种方法 ...

  9. 21.SpringCloud实战项目-后台题目类型功能(网关、跨域、路由问题一文搞定)

    SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. ...

  10. keras数据集读取

    from tensorflow.python import keras (x_train,y_train),(x_test,y_test) = keras.datasets.cifar100.load ...