分组允许把数据分为多个逻辑组, 以便能对每个组进行聚集计算

创建分组

分组是在SELECT语句的GROUP BY子句中建立的。

MariaDB [crashcourse]> SELECT vend_id, COUNT(*) AS num_prods FROM products GROUP BYvend_id;+---------+-----------+

| vend_id | num_prods |

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

| 1001 | 3 |

| 1002 | 2 |

| 1003 | 7 |

| 1005 | 2 |

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

4 rows in set (0.001sec)

MariaDB[crashcourse]>

因为使用了GROUP BY, 就不必指定了要计算和估值的每个组了。系统会自动完成。GROUP BY子句指示MySQL分组数据, 然后对每个组而不是整个结果集进行聚集。

在具体使用GROUP BY子句前, 需要知道一些重要的规定

GROUP BY子句可以包含任意数目的列

如果在GROUP BY子句中嵌套了分组, 数据将在最后规定的分组上进行汇总

GROUP BY子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在SELECT中使用表达式, 则必须在GROUP BY子句中指定相同的表达式。不能使用别名。

除聚集计算语句外, SELECT语句中的每个列都必须在GROUP BY子句中给出

如果分组列中具有NULL值, 则NULL将作为一个分组返回。如果列中有多行NULL, 他们将分为一组

GROUP BY子句必须出现在WHERE子句之后, ORDER BY之前。

过滤分组

MySQL允许过滤分组, 规定包括哪些分组、排除哪些分组。

MySQL使用HAVING来进行过滤分组

HAVING与WHERE非常相似, 只是WHERE子句过滤的是指定的行而不是分组。事实上, WHERE没有分组的概念。而HAVING可以过滤分组

MariaDB [crashcourse]> SELECT cust_id, COUNT(*) AS orders FROM orders GROUP BY cust_id HAVING COUNT(*) >=2;+---------+--------+

| cust_id | orders |

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

| 10001 | 2 |

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

1 row in set (0.002sec)

MariaDB[crashcourse]>

WHERE与HAVING的区别:

WHERE在数据分组前进行过滤, 而HAVING在数据分组后进行过滤。这是一个重要的区别。WHERE排序的行不包括在分组中, 这可能会改变计算值, 从而影响HAVING子句中基于这些值过滤的分组

分组和排序

ORDER BY与GROUP BY之间的差别

一般在使用GROUP BY子句时, 应该也给出ORDER BY子句

SELECT子句顺序

在SELECT子句中必须遵循如下次数

mysql 分组数据_MySQL基础之分组数据相关推荐

  1. ci mysql操作_MySQL基础篇/第3篇:MySQL基本操作语句.md · icanci/MySQL-Review - Gitee.com...

    ### 第3篇:MySQL基本操作语句 - MySQL基础操作 #### 排序检索数据 - 之前的数据没有进行排序,其是按照默认在数据表中的数据返回的 - SELECT语句的ORDER BY 子句进行 ...

  2. mysql谓词演算_MySQL基础知识

    一.了解MySQL 1.什么是数据库? 数据库是一种以某种有组织的方式存储的数据集合. 2.模式(schema):关于数据库和表的布局及特性的信息. 3.列:正确的将数据分解为多个列极为重要.通过把它 ...

  3. mysql〉_MySql 基础知识-常用命令及sql语句

    一.常用mysql命令行命令 1,启动mysql服务 net start mysql. 停止mysql服务 net stop mysql 2,netstart -na|findstr 3306查看被监 ...

  4. 学好mysql教材_MySQL基础学习

    开始学习MySQL了,在几本经典的教材和课程之间纠结了一段时间,至于选的课到底适不适合我得等到后期才能反馈了.ps:OneNote做笔记非常棒! ##mysql服务的登录和退出 方式一:计算机-右击管 ...

  5. mysql军刀_mysql基础操作

    登陆mysql命令行 mysql -h192.168.1.110 -uroot -p 查看所有数据库 show databases; 使用mysql数据库 use mysql; 如果数据库mysql存 ...

  6. java mysql 变量_MySQL基础_变量

    一. 系统变量: 变量由系统提供的,不用自定义,又分为全局变量和会话变量. 1. 全局变量 作用域:针对于所有会话(连接)有效,但不能跨重启 #查看所有全局变量 SHOW GLOBAL VARIABL ...

  7. mysql查询_MySQL基础,查询语句详解

    使用 [GROUP BY ] [HAVING ] 进行分组查询(示例结果如图按顺序) 新增分组字段 ALTER TABLE study_1 ADD study_group int(11); 为原有的数 ...

  8. mysql基础和高级整理_MySQL基础笔记整理

    MySQL安装和启动 Windows下安装和启动服务 安装 1 在MySQL官网下载zip文件, 2 在任意位置保存解压.这里在E盘创建MySQL目录 E:\MySQL\ 3 E:\Monkey\my ...

  9. mysql核心数据库_从MySQL基础进军MySQL核心架构 178集MySQL数据库核心基础视频教程 MySQL基础案例教程...

    从MySQL基础进军MySQL核心架构 178集MySQL数据库核心基础视频教程 MySQL基础案例教程 课程目录 (1) 01MySQL基础_课程引入.avi (2) 02MySQL基础_为什么学习 ...

最新文章

  1. git2.29.2.2怎么安装_制作Win10安装U盘时install.wim大于4G怎么办?
  2. maven junit scope test坑
  3. 2017.8.30 elasticsearch-sql的安装与使用
  4. Linux进程和计划任务管理(详细图例)
  5. React开发(198):需要加个{}
  6. Inception网络 运行在Cifar10 测试集87.88% Tensorflow 2.1 小白从代码实践中 理解
  7. [Day14]Eclipse高级、类与接口作为参数返回值
  8. php larve,封装composer包,实现thinkphp、larverl、yii框架中使用(使用框架实现回调方法)...
  9. 由于连接方在一段时间后没有正确答复或连接的主机_新风换气机使用效果不佳,为何?掌握正确使用方法就好了...
  10. Linux中如何恢复rm命令误删除的文件之extundelete编译安装及使用
  11. [转]vs2005(c#)水晶报表
  12. 知乎热议最丑陋的数学公式:「四次方程求根」高票当选
  13. 存储容量与地址空间的计算
  14. python exec函数和eval函数_python中的exec()函数和eval()函数
  15. 沐阳Python扫盲01类的概念与实例
  16. 汽车CAN通信基础知识-Java之Socket通信实战
  17. Java中字符流(FileReader(read、close)、FileWriter(write、close)、字符(输入、输出)流原理解析)
  18. 基于FPGA的HDMI显示(二)
  19. Python爬虫爬取美女写真实例
  20. 会计学原理学习笔记——第三章——账户与复式记账(3.5生产准备业务核算——费用发生业务核算)

热门文章

  1. php赋值权重_php权重计算方法代码分享
  2. androidstudio表格中填充 宽跟长一样_Excel表格的基本操作教程,覆盖表格制作的10大知识!...
  3. 【python3】通过hashlib 和base64 对字符串进行加密
  4. Python数据库添加时间
  5. python web 程序的9种部署方式
  6. 驱动华为_实锤!华为成立驱动芯片部门,OLED驱动芯片正流片
  7. 【今日头条】头条号图文发布页面的“扩展链接”是干嘛用的?
  8. 20200301 Intel Realsense D435摄像头掉线问题测试数据记录
  9. python 函数参数 (必选参数、默认参数、可选参数、关键字参数)
  10. python开发环境配置以及其简单的运行方式