《SQL 基础教程》第三章:聚合和排序
这一章节主要讲了三方面的内容:
- 数据的汇总操作
a. 聚合函数
b.分组操作 - 给汇总操作指定条件
- 对汇总结果进行排序
COUNT()等聚合函数
定义:
输入多行,输出一行的函数称为聚合函数
功能:
用于对数据进行汇总,如:
- COUNT: 计算表中的记录数( COUNT(*) 的时候为所有行的行数, COUNT(
<column>)的时候是不包含 NULL 时候的行数. - SUM: 计算数值列中的合计值(提前将 NULL 排除)
- AVG:计算数值列中的平均值(提前将 NULL 排除)
- MAX: 求任意列中数据的最大值
- MIN: 求任意列中数据的最小值
格式:
SELECT SUM(<column-name>)
FROM <tablename>;
其中 column-name 为函数的参数,
其前可加关键词 DISTINCT, 用于合并相同的数据
GOURP BY 子句 & 聚合键
定义:
现将表分组,然后进行汇总操作,这一过程需要 GROUP BY 子句.
GROUP BY 中指定的列称为「聚合键」,其中值为 NULL 的数据单纯列为一列.
格式:
SELECT <column1>, <column2>,<column3>,....
FROM <tablename>
GROUP BY <column1>, <column2>,<column3>...
其他问题
问题1
同时包含 WHERE, GROUP BY 子句的时候,先运行 WHERE 子句对数据进行过滤.
具体顺序如下:
- FROM
- WHERE
- GROUP BY
- SELECT
问题2
GROUP BY 与 DISTINCT 的区分
- 当想要计算汇总结果的时候,用 GROUP BY
- 当想要合并数据的时候用 DISTINCT
问题3
把聚合键之外的列名写在 SELECT 子句中
问题原因:
聚合键和其他列名并不是一对一的
规定: 有聚合键的 SELECT 语句,只能包含:常数、聚合函数、聚合键
HAVING 子句 & 为汇总指定条件
定义:
在对数据分组之后,得到其聚合函数的值, HAVING 子句可以特定分组的值.
格式:
SELECT product_type, COUNT(*)
FROM Product
GROUP BY product_type
HAVING COUNT(*) = 2;
HAVING 子句中可包含常数、聚合函数、聚合键
ORDER BY 子句 & 排序键
定义:
在对数据进行查询之后,对数据进行排序的语句为 ORDER BY ;
ORDER BY 中书写的列名叫做「排序键」,其规则如下:
- 可指定多个排序键,按优先顺序从高到低排序
- 在最后添加 ASC\DESC 关键字可指定升序\降序.
- 排序后, NULL 数据位于表的末尾
总结
汇总的语法顺序为:
SELECT--->FROM-->WHERE-->GROUP BY-->HAVING-->ORDER BY
汇总的执行顺序为:
FROM-->WHERE-->GROUP BY-->HAVING-->SELECT-->ORDER BY
由此产生的特殊问题
由于别名是在 SELECT 语句中执行的,在它之前的语句,比如 GROUP BY 就不能使用别名;在其之后的语句,ORDER BY 可以使用别名.
《SQL 基础教程》第三章:聚合和排序的更多相关文章
- [SQL基础教程] 3-1 对表进行聚合查询
[SQL基础教程] 3-1 对表进行聚合查询 聚合函数 用于合计的函数称为聚合函数或者集合函数 COUNT SUM AVG MAX MIN SELECT COUNT(*) FROM table; SE ...
- Objective-C 基础教程第三章,面向对象编程基础知
目录 Objective-C 基础教程第三章,面向对象编程基础知 0x00 前言 0x01 间接(indirection) 0x02 面向对象编程中使用间接 面向过程编程 面向对象编程 0x03 OC ...
- [SQL基础教程] 3-4 对查询结果进行排序/ORDER BY
[SQL基础教程] 3-4 对查询结果进行排序/ORDER BY ORDER BY SELECT <列名1>,<列名2>,<列名2>... FROM ORDER B ...
- 《SQL 基础教程》第二章:查询基础
这一章的结构如下: SELECT 语句基础 算术运算符和比较运算符 逻辑运算符 SELECT 语句可用于查询数据,并且可以设定条件来查询具有特定值的记录.条件的设定就需要算数运算符.比较运算符和逻辑运 ...
- 《SQL 基础教程》—第一章:数据库与 SQL
导言 这一章的内容如下: 数据库简介 SQL 概要 表的创建 表的删除与更新 数据库简介 定义: Database, 是大量数据的集合Database Management System,是用于管理数 ...
- python基础教程-第三章-使用字符串
本章将会介绍如何使用字符串何世华其他的值(如打印特殊格式的字符串),并简单了解下利用字符串的分割.联接.搜索等方法能做些什么 3.1 基本字符串操作 所有标准的序列操作(索引.分片.乘法.判断成员资格 ...
- 《SQL基础教程》
Product表 CREATE TABLE Product (product_id CHAR(4) NOT NULL, product_name VARCHAR(100) NOT NULL, prod ...
- SQL基础教程(第2版)第3章 聚合与排序:3-2 对表进行分组
第3章 聚合与排序:3-2 对表进行分组 ● 使用GROUP BY子句可以像切蛋糕那样将表分割.通过使用聚合函数和GROUP BY子句,可以根据“商品种类”或者“登记日期”等将表分割后再进行汇总.● ...
- SQL基础教程(第2版)第3章 聚合与排序:3-4 对查询结果进行排序
第3章 聚合与排序:3-4 对查询结果进行排序 ● 使用ORDER BY子句对查询结果进行排序.● 在ORDER BY子句中列名的后面使用关键字ASC可以(通常省略默认)进行升序排序,使用DESC关键 ...
随机推荐
- java.net.UnknownHostException 异常处理
修改hosts文件: 1.把机器名和ip写在下面 2.hosts文件生效 soure /etc/hosts
- mysql 用户及权限
永远不要给任何人(除了MySQL root帐户)访问 数据库中的 user表mysql!这很关键. mysql.user表存放所有用户的主机,用户名,密码,权限.直接修改表中信息,需flush pri ...
- python摸爬滚打之day20--多继承,MRO和C3算法
1.新式类和经典类 在python2.2之前, 基类如果不写(), 则表示为经典类; 在python2.2之后, 经典类不复存在, 只存在新式类. 如果基类谁都不继承的话, 则默认继承object. ...
- toolbar按钮添加图标
需要toolbar关联imagelist组件,imagelist组件添加需要的图片,在toolbar新建按钮,按钮中选择相应图表.
- python框架之Flask(6)-flask-sqlalchemy&flask-script&flask-migrate使用
整合SQLAlchemy 安装 pip3 install flask-sqlalchemy 简单使用 from flask import Flask from flask_sqlalchemy imp ...
- 小程序html转wxml,微信小程序用wxParse解析html
1.首先下载 wxParse脚本,到https://github.com/icindy/wxParse下载,将wxParse文件夹放置到小程序根目录,即跟pages同级目录 2.在样式页面 wxss ...
- 使用maven搭建springMVC开发环境
1.引入框架所需的包,pom.xml文件中添加如下配置: <dependency> <groupId>org.springframework</groupId> & ...
- typescript 01 认识ts和ts的类型
看ITYING ts专辑(前三集总结) TypeScript 是 Javascript 的超级,遵循最新的 ES6.Es5 规范.TypeScript 扩展了 JavaScript 的语法.TypeS ...
- rsync 远程同步 实时同步备份 两种免交互的方式实现实时备份
rsync 远程同步: 一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH.rsync主机同步 作用:做数据备份 备份方式: 完全备份 增量备份 ...
- UI框架搭建DAY1
分析:UI框架主要是为了用户(使用框架的程序猿)更快捷.方便地开发UI,UI框架的好处还在于解耦,使得程序更具有灵活性. UI框架的核心是窗口的管理,窗口管理的主要任务就是显示窗口和关闭窗口. 因为窗 ...