SQL零基础入门学习(十五)

SQL函数

SQL MAX() 函数

MAX() 函数返回指定列的最大值。

SQL MAX() 语法

SELECT MAX(column_name) FROM table_name;

演示数据库

在本教程中,我们将使用 RUNOOB 样本数据库。

下面是选自 “Websites” 表的数据:

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 5000  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
|  6 | 百度         | https://www.baidu.com/    |     4 | CN      |
|  7 | stackoverflow | http://stackoverflow.com/ |     0 | IND     |
+----+---------------+---------------------------+-------+---------+

SQL MAX() 实例

下面的 SQL 语句从 “Websites” 表的 “alexa” 列获取最大值:

SELECT MAX(alexa) AS max_alexa FROM Websites;

执行以上 SQL 结果如下所示:

MIN() 函数

MIN() 函数返回指定列的最小值。

####SQL MIN() 语法

SELECT MIN(column_name) FROM table_name;

演示数据库

在本教程中,我们将使用 RUNOOB 样本数据库。

下面是选自 “Websites” 表的数据:

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
|  6 | 百度         | https://www.baidu.com/    |     4 | CN      |
|  7 | stackoverflow | http://stackoverflow.com/ |     0 | IND     |
+----+---------------+---------------------------+-------+---------+

SQL MIN() 实例

下面的 SQL 语句从 “Websites” 表的 “alexa” 列获取最小值:

SELECT MIN(alexa) AS min_alexa FROM Websites;

执行以上 SQL 结果如下所示:

SUM() 函数

SUM() 函数返回数值列的总数。

SQL SUM() 语法

SELECT SUM(column_name) FROM table_name;

演示数据库

在本教程中,我们将使用 RUNOOB 样本数据库。

下面是选自 “access_log” 表的数据:

mysql> SELECT * FROM access_log;
+-----+---------+-------+------------+
| aid | site_id | count | date       |
+-----+---------+-------+------------+
|   1 |       1 |    45 | 2016-05-10 |
|   2 |       3 |   100 | 2016-05-13 |
|   3 |       1 |   230 | 2016-05-14 |
|   4 |       2 |    10 | 2016-05-14 |
|   5 |       5 |   205 | 2016-05-14 |
|   6 |       4 |    13 | 2016-05-15 |
|   7 |       3 |   220 | 2016-05-15 |
|   8 |       5 |   545 | 2016-05-16 |
|   9 |       3 |   201 | 2016-05-17 |
+-----+---------+-------+------------+
9 rows in set (0.00 sec)
```
#### SQL SUM() 实例
下面的 SQL 语句查找 "access_log" 表的 "count" 字段的总数:```
SELECT SUM(count) AS nums FROM access_log;
```
执行以上 SQL 输出结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2d8860aecb514ff5a01c87ee42e2c536.png)
### GROUP BY 语句
GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。#### SQL GROUP BY 语法
```
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
```#### 演示数据库
在本教程中,我们将使用 RUNOOB 样本数据库。下面是选自 "Websites" 表的数据:
```
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
+----+---------------+---------------------------+-------+---------+
```
下面是 "access_log" 网站访问记录表的数据:
```
mysql> SELECT * FROM access_log;
+-----+---------+-------+------------+
| aid | site_id | count | date       |
+-----+---------+-------+------------+
|   1 |       1 |    45 | 2016-05-10 |
|   2 |       3 |   100 | 2016-05-13 |
|   3 |       1 |   230 | 2016-05-14 |
|   4 |       2 |    10 | 2016-05-14 |
|   5 |       5 |   205 | 2016-05-14 |
|   6 |       4 |    13 | 2016-05-15 |
|   7 |       3 |   220 | 2016-05-15 |
|   8 |       5 |   545 | 2016-05-16 |
|   9 |       3 |   201 | 2016-05-17 |
+-----+---------+-------+------------+
9 rows in set (0.00 sec)
```
#### GROUP BY 简单应用
统计 access_log 各个 site_id 的访问量:
```
SELECT site_id, SUM(access_log.count) AS nums
FROM access_log GROUP BY site_id;
```
执行以上 SQL 输出结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/197fdafdee134f9fad01ac28246a4637.png)
#### SQL GROUP BY 多表连接
下面的 SQL 语句统计有记录的网站的记录数量:
```
SELECT Websites.name,COUNT(access_log.aid) AS nums FROM access_log
LEFT JOIN Websites
ON access_log.site_id=Websites.id
GROUP BY Websites.name;
```
执行以上 SQL 输出结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/a40a2a53bfe04624a520cda69acff652.png)
### HAVING 子句
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。HAVING 子句可以让我们筛选分组后的各组数据。####SQL HAVING 语法
```
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;
```#### 演示数据库
在本教程中,我们将使用 RUNOOB 样本数据库。下面是选自 "Websites" 表的数据:
```
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
+----+---------------+---------------------------+-------+---------+
```
下面是 "access_log" 网站访问记录表的数据:
```
mysql> SELECT * FROM access_log;
+-----+---------+-------+------------+
| aid | site_id | count | date       |
+-----+---------+-------+------------+
|   1 |       1 |    45 | 2016-05-10 |
|   2 |       3 |   100 | 2016-05-13 |
|   3 |       1 |   230 | 2016-05-14 |
|   4 |       2 |    10 | 2016-05-14 |
|   5 |       5 |   205 | 2016-05-14 |
|   6 |       4 |    13 | 2016-05-15 |
|   7 |       3 |   220 | 2016-05-15 |
|   8 |       5 |   545 | 2016-05-16 |
|   9 |       3 |   201 | 2016-05-17 |
+-----+---------+-------+------------+
9 rows in set (0.00 sec)
```#### SQL HAVING 实例
现在我们想要查找总访问量大于 200 的网站。我们使用下面的 SQL 语句:
```
SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log
INNER JOIN Websites
ON access_log.site_id=Websites.id)
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;
```
执行以上 SQL 输出结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/ccf5ec0cce93401fa209295517cad3b4.png)
现在我们想要查找总访问量大于 200 的网站,并且 alexa 排名小于 200。我们在 SQL 语句中增加一个普通的 WHERE 子句:
```
SELECT Websites.name, SUM(access_log.count) AS nums FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id
WHERE Websites.alexa < 200
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;
```
执行以上 SQL 输出结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/fca5baba77fa4f2e86bb129592b714ff.png)

SQL零基础入门学习(十六)相关推荐

  1. SQL零基础入门学习(七)

    SQL零基础入门学习(六) SQL BETWEEN 操作符 BETWEEN 操作符选取介于两个值之间的数据范围内的值.这些值可以是数值.文本或者日期. SQL BETWEEN 语法 SELECT co ...

  2. SQL零基础入门学习(十)

    SQL零基础入门学习(九) SQL CREATE DATABASE 语句 CREATE DATABASE 语句用于创建数据库. SQL CREATE DATABASE 语法 CREATE DATABA ...

  3. SQL零基础入门学习(十四)

    上篇:SQL零基础入门学习(十三) SQL NULL 值 NULL 值代表遗漏的未知数据. 默认地,表的列可以存放 NULL 值. 如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新 ...

  4. SQL零基础入门学习(十二)

    SQL零基础入门学习(SQL约束) SQL CREATE INDEX 语句 CREATE INDEX 语句用于在表中创建索引. 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据. 索引 ...

  5. SQL零基础入门学习(十三)

    上一篇(SQL零基础入门学习(十二)) SQL 视图(Views) 视图是可视化的表. SQL CREATE VIEW 语句 在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表. 视图包含行 ...

  6. SQL零基础入门学习(十一)

    SQL零基础入门学习(十) SQL NOT NULL 约束 NOT NULL 约束强制列不接受 NULL 值. NOT NULL 约束强制字段始终包含值.这意味着,如果不向字段添加值,就无法插入新记录 ...

  7. SQL零基础入门学习(四)

    SQL零基础入门学习(三) SQL INSERT INTO 语句 INSERT INTO 语句用于向表中插入新记录. SQL INSERT INTO 语法 INSERT INTO 语句可以有两种编写形 ...

  8. SQL零基础入门学习(三)

    SQL零基础入门学习(二) SQL WHERE 子句 WHERE 子句用于提取那些满足指定条件的记录. SQL WHERE 语法 SELECT column1, column2, ... FROM t ...

  9. SQL零基础入门学习(九)

    SQL零基础入门学习(八) SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列.列也 ...

最新文章

  1. exec函数组六个函数的用法和区别
  2. axios的简单使用
  3. 查找数组B中不在数组A中的元素
  4. SAP Spartacus产品转盘页面(ProductCarousel)的产品数据批量加载实现细节
  5. 前后端数据加密传输 RSA非对称加密
  6. 临死之前我要写一本《中国哲学史——以自然主义和人道主义的矛盾为视角》...
  7. C++中this指针的用法
  8. 大额支付系统行号编制规则
  9. PC 和开发板之间传输文件
  10. 可编辑的电子海图系统功能拓展与应用
  11. 【收藏】QCIF、 CIF、2CIF、DCIF、D1(4CIF)格式介绍
  12. a=a*10+b型题目
  13. PS教程:紫色光晕效果实现
  14. http 代理服务器搭建 tinyProxy
  15. 折叠共源共栅放大器(一)项目报告/实验/论文/比赛
  16. 可以参悟人生的十个故事
  17. 数学与计算机专业属于金融类吗,数学与应用数学本科,考研能考哪些专业?计算机金融最简单?...
  18. mac 天文软件安装配置【python/ds9/iraf】
  19. CSDN截止目前为止有多少的博客专家以及比例人数?
  20. Python之字典巩固练习(随机生成银行卡号、重复数字统计、模拟轮盘抽奖游戏等)

热门文章

  1. 封包协议,加密解密,线程发包,recv,明文收包
  2. Win10 开启 Guest 或者 添加标准用户
  3. BIGEMAP使用Unity3D制作真实地形的两种方法
  4. 解决500 Internal Privoxy Error问题
  5. 应用发布出现问题—— “管理系统“ (Apple ID: 123456789) 在iTunes Connect上存在问题。
  6. ubuntu17 python3.6 出错 找不到 Python.h 安装uwsgi
  7. 登录Foxmail显示LOGIN Login error user suspended
  8. js 导出excels
  9. 你应该在开始API开发之前知道的事(上)(翻译)
  10. 局部刷新某个div(重大突破)