SQL函数:AVG()、COUNT()、FIRST() 、LAST()、MAX()、MIN()、SUM()

本文详细介绍了SQL中的几个重要聚合函数,包括AVG()用于计算平均值,COUNT()用于统计行数,COUNT(DISTINCT)用于计数不同值,FIRST()和LAST()获取第一行和最后一行数据,MAX()和MIN()找出最大和最小值,以及SUM()用于求和。通过实例展示了这些函数在实际数据库查询中的应用。

目录

SQL AVG() 函数

AVG() 函数

SQL AVG() 语法

SQL COUNT() 函数

SQL COUNT(column_name) 语法

SQL COUNT(*) 语法

SQL COUNT(DISTINCT column_name) 语法

SQL FIRST() 函数

FIRST() 函数

SQL FIRST() 语法

LAST() 函数

SQL LAST() 语法

MAX() 函数

SQL MAX() 语法

MIN() 函数

SQL MIN() 语法

SUM() 函数

SQL SUM() 语法


SQL AVG() 函数


AVG() 函数

AVG() 函数返回数值列的平均值。

SQL AVG() 语法

SELECT AVG(column_name) FROM table_name


演示数据库

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

下面是选自 "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 |
+-----+---------+-------+------------+


SQL AVG() 实例

下面的 SQL 语句从 "access_log" 表的 "count" 列获取平均值:

实例

SELECT AVG(count) AS CountAverage FROM access_log;

执行以上 SQL 输出结果如下:

下面的 SQL 语句选择访问量高于平均访问量的 "site_id" 和 "count":

实例

SELECT site_id, count FROM access_log
WHERE count > (SELECT AVG(count) FROM access_log);

执行以上 SQL 输出结果如下:


SQL COUNT() 函数


COUNT() 函数返回匹配指定条件的行数。


SQL COUNT(column_name) 语法

COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):

SELECT COUNT(column_name) FROM table_name;

SQL COUNT(*) 语法

COUNT(*) 函数返回表中的记录数:

SELECT COUNT(*) FROM table_name;

SQL COUNT(DISTINCT column_name) 语法

COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:

SELECT COUNT(DISTINCT column_name) FROM table_name;

注释:COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但是无法用于 Microsoft Access。


演示数据库

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

下面是选自 "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 |
+-----+---------+-------+------------+


SQL COUNT(column_name) 实例

下面的 SQL 语句计算 "access_log" 表中 "site_id"=3 的总访问量:

实例

SELECT COUNT(count) AS nums FROM access_log
WHERE site_id=3;


SQL COUNT(*) 实例

下面的 SQL 语句计算 "access_log" 表中总记录数:

实例

SELECT COUNT(*) AS nums FROM access_log;

执行以上 SQL 输出结果如下:


SQL COUNT(DISTINCT column_name) 实例

下面的 SQL 语句计算 "access_log" 表中不同 site_id 的记录数:

实例

SELECT COUNT(DISTINCT site_id) AS nums FROM access_log;

执行以上 SQL 输出结果如下:


SQL FIRST() 函数


FIRST() 函数

FIRST() 函数返回指定的列中第一个记录的值。

SQL FIRST() 语法

SELECT FIRST(column_name) FROM table_name;

注释:只有 MS Access 支持 FIRST() 函数。


SQL Server、MySQL 和 Oracle 中的 SQL FIRST() 工作区

SQL Server 语法

SELECT TOP 1 column_name FROM table_name
ORDER BY column_name ASC;

实例

SELECT TOP 1 name FROM Websites
ORDER BY id ASC;

MySQL 语法

SELECT column_name FROM table_name
ORDER BY column_name ASC
LIMIT 1;

实例

SELECT name FROM Websites
ORDER BY id ASC
LIMIT 1;

Oracle 语法

SELECT column_name FROM table_name
ORDER BY column_name ASC
WHERE ROWNUM <=1;

实例

SELECT name FROM Websites
ORDER BY id ASC
WHERE ROWNUM <=1;


演示数据库

在本教程中,我们将使用 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 FIRST() 实例

下面的 SQL 语句选取 "Websites" 表的 "name" 列中第一个记录的值:

实例

SELECT name AS FirstSite FROM Websites LIMIT 1;

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


LAST() 函数

LAST() 函数返回指定的列中最后一个记录的值。

SQL LAST() 语法

SELECT LAST(column_name) FROM table_name;

注释:只有 MS Access 支持 LAST() 函数。


SQL Server、MySQL 和 Oracle 中的 SQL LAST() 工作区

SQL Server 语法

SELECT TOP 1 column_name FROM table_name
ORDER BY column_name DESC;

实例

SELECT TOP 1 name FROM Websites 
ORDER BY id DESC;

MySQL 语法

SELECT column_name FROM table_name
ORDER BY column_name DESC
LIMIT 1;

实例

SELECT name FROM Websites
ORDER BY id DESC
LIMIT 1;

Oracle 语法

SELECT column_name FROM table_name
ORDER BY column_name DESC
WHERE ROWNUM <=1;

实例

SELECT name FROM Websites
ORDER BY id DESC
WHERE ROWNUM <=1;


演示数据库

在本教程中,我们将使用 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 LAST() 实例

下面的 SQL 语句选取 "Websites" 表的 "name" 列中最后一个记录的值:

实例

SELECT name FROM Websites
ORDER BY id DESC
LIMIT 1;

执行以上 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 输出结果如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值