算术函数
-
使用 AVG() 函数求数值列的平均值
平均函数AVG()是平均数AVERAGE的缩写,它用于求数值列的平均值。它可以用来返回所有列的平均值,也可以用来返回特定列和行的平均值
具体的计算过程为:其通过对表中行数计数并计算特定数值列的列值之和,求得该列的平均值
不过但参数column_name列中的数据均为空时,结果会返回NULL
语法:
select AVG(column_name) from table_name;
-
使用 MAX() 函数返回指定列中的最大值
最大值函数MAX()用来返回指定列中的最大值,只有一个参数column_name,表示指定的列名
不过但参数column_name列中的数据均为空时,结果会返回NULL
语法:
select MAX(column_name) from table_name;
-
使用 MIN() 函数返回指定列中的最小值
最小值函数MIN()用来返回指定列中的最小值,只有一个参数column_name,表示指定的列名
不过但参数column_name列中的数据均为空时,结果会返回NULL
语法:
select MIN(column_name) from table_name;
-
使用 SUM() 函数统计数值列的总数
SUM()函数用于统计数值列的总数并返回其值,只有一个参数column_name,表示指定的列名
不过但参数column_name列中的数据均为空时,结果会返回NULL
语法:
select SUM(column_name) from table_name;
-
使用 ROUND() 函数将数值四舍五入
ROUND()函数用于把数值字段舍入为指定的小数位数
语法:
select ROUND(column_name, decimals) from table_name;
其中:
column_name为要舍入的字段
decimal规定要返回的小数位数
ROUND()函数始终返回一个值。当decimals为正数时,column_name四舍五入为decimal所指定的小数位数。为decimals为负数时,column_name则按decimals所指定的在小数点的左边四舍五入
特别的,如果length是负值且大于小数点前的数字个数,ROUND()函数将返回0
实例如下:
ROUND( X ):返回参数 X 四舍五入后的一个整数
mysql> SELECT ROUND(1.51);
+-------------+
| ROUND(1.51) |
+-------------+
| 2 |
+-------------+
1 row in set (0.00 sec)
ROUND(X, D): 返回参数 X 四舍五入且保留 D 位小数后的一个数字。如果 D 为 0,结果将没有小数点或小数部分
mysql> SELECT ROUND(1.388, 1);
+-----------------+
| ROUND(1.388, 1) |
+-----------------+
| 1.4 |
+-----------------+
1 row in set (0.00 sec)
mysql> select round(12.45, -1);
+------------------+
| round(12.45, -1) |
+------------------+
| 10 |
+------------------+
1 row in set (0.00 sec)
mysql> select round(12.45, -2);
+------------------+
| round(12.45, -2) |
+------------------+
| 0 |
+------------------+
1 row in set (0.00 sec)
-
使用NULL()函数判断空值
在介绍判断空值函数NULL()之前,我们先来了解一下在之前的学习中遇到多次的NULL,即我们常说的空值。但是这种叫法并不准确,因为NULL并不是值,它表示数值未知或者不确定。因此,NULL无法和0或空格字符串""进行比较,甚至NULL与NULL之间也无法比较。默认地,表的列可以存放NULL
在此主要介绍SQL中的ISNULL()函数和IFNULL()函数,它们的用途都是判断字段是否为空,但是具体的用法有些差别
ISNULL()
ISNULL()函数用于判断字段是否为NULL,只有一个参数column_name为列名,根据column_name列中的字段是否为NULL值返回0或1
语法:
select isnull(column_name) from table_name;
其中:
如果column_name列中的某个字段是NULL则返回1,不是则返回0
IFNULL()
IFNULL()函数也是用于判断字段是否为NULL,但是与ISNULL()不同的是它接收两个参数,第一个参数column_name为列名,第二个参数value相当于备用值
语法:
select ifnull(column_name, value) from table_name;
其中:
如果column_name列中的某个字段是NULL则返回value值,不是则返回对应内容
COALESCE(column_name, value)函数作用和用法和IFNULL()相同
实例如下:
mysql> select * from user;
+----+----------+----------+-------+
| id | username | password | name |
+----+----------+----------+-------+
| 1 | zhangsan | 123 | zhong |
| 2 | haoren | 1234 | dong |
| 3 | haosehn | 12234 | 1dong |
| 4 | qiqi | 11 | sfsf |
| 5 | sdss | 44444 | hahah |
| 6 | NULL | 12333 | xiao |
+----+----------+----------+-------+
6 rows in set (0.00 sec)
mysql> select username, isnull(username), ifnull(username, 'welcome'), coalesce(username, 'welcome') from user;
+----------+------------------+-----------------------------+-------------------------------+
| username | isnull(username) | ifnull(username, 'welcome') | coalesce(username, 'welcome') |
+----------+------------------+-----------------------------+-------------------------------+
| zhangsan | 0 | zhangsan | zhangsan |
| haoren | 0 | haoren | haoren |
| haosehn | 0 | haosehn | haosehn |
| qiqi | 0 | qiqi | qiqi |
| sdss | 0 | sdss | sdss |
| NULL | 1 | welcome | welcome |
+----------+------------------+-----------------------------+-------------------------------+
6 rows in set (0.00 sec)
- 使用COUNT()函数计数
COUNT()函数用于计数,可利用其确定表中行数的数目或者符合特定条件的行的数目。当COUNT()中的参数不同时,其的用途也是有明显的不同的,主要可分为以下三种情况:COUNT(column_name)、COUNT(*)、COUNT(DISTINCT column_name)
COUNT(column_name)
COUNT(column_name)函数会对指定列具有的行数进行计数,但是会除去值为NULL的行。该函数只要用于查看和列数据的数量情况,便于统计数据的缺失值
假设出现某一列的数据全为NULL值得情况
使用COUNT(column_name)函数对该列进行计数,会返回0
语法:
select count(column_name) from table_name;
COUNT(*)
COUNT(*)函数会对表中行的数目进行计数,包括值为NULL所在行和重复项所在行
该函数主要用于查看表中的记录数
语法:
select count(*) from table_name;
注意: count(column_name) 和 count(*) 的区别
count(column_name) 中,如果column_name字段中值为NULL,则计数不会增加,而如果字段值为空字符串"",则字段值会加1
count(*)中,除非整个记录全为NULL,则计数不会增加,如果在某一个记录不为NULL,或者为空字符串"",计数值都会加1.正常来说,表都会有主键,而主键不为空,所以COUNT(*)在有主键的表中等同于COUNT(PRIMARY_KEY),即查询有多少条记录
COUNT(DISTINCT column_name)
COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目
语法:
select count(distinct column_name) from table_name;
实例如下:
mysql> select * from user;
+----+----------+----------+-------+
| id | username | password | name |
+----+----------+----------+-------+
| 1 | zhangsan | 123 | zhong |
| 2 | haoren | 1234 | dong |
| 3 | haosehn | 12234 | 1dong |
| 4 | qiqi | 11 | sfsf |
| 5 | qiqi | 44444 | hahah |
| 6 | NULL | 12333 | xiao |
+----+----------+----------+-------+
6 rows in set (0.00 sec)
mysql> select count(*), count(username), count(distinct username) from user;
+----------+-----------------+--------------------------+
| count(*) | count(username) | count(distinct username) |
+----------+-----------------+--------------------------+
| 6 | 5 | 4 |
+----------+-----------------+--------------------------+
1 row in set (0.01 sec)






网友评论