写在前面,最近三个月,貌似都没有更新,是因为个人原因(工作+生活)所导致的,后面会努力来更新的哈,争取不中断这么久,保障每周最少更新3篇。
希望继续关注我哦。
有些时候,我们进行数据的查询,并不需要返回实际的数据,只是说要对数据进行一个总结,可以对获取的数据进行分析和报告。
包括如下函数:
函数 | 作用 |
---|---|
COUNT() | 返回某列的行数 |
SUM() | 返回某列值的和 |
AVG() | 返回某列的平均值 |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
count()函数
count()
函数统计数据表中包含的记录行的总数,或者根据查询结果返回列中包含的数据行数。有以下两种使用方法:
-
count(*)
计算表中总的行数,不管某列是否有数值或者为空值。 -
count(字段名)
计算指定列下总的行数,计算时将忽略空值的行。
我们首先看下这个名为test
的数据表中的数据;
mysql> select * from test;
+----+-----------+------+----------+------+
| id | name | age | area | like |
+----+-----------+------+----------+------+
| 1 | zhangsan | 20 | shanxi | eat |
| 4 | zhangsan1 | 20 | shanxi | eat |
| 5 | lisi | 22 | beijing | 123 |
| 6 | wangwu | 24 | shandong | 222 |
| 7 | NULL | 24 | shandong | 222 |
+----+-----------+------+----------+------+
5 rows in set (0.00 sec)
mysql>
下面我们来查询这个数据表中行数;
mysql> select count(*) from test;
+----------+
| count(*) |
+----------+
| 5 |
+----------+
1 row in set (0.00 sec)
mysql>
由上面的查询结果可以看出来,count(*)
返回test
表中记录的总行数。
那么我们接下来只查询name
字段的行数,看下返回的内容是什么;
mysql> select count(name) from test;
+-------------+
| count(name) |
+-------------+
| 4 |
+-------------+
1 row in set (0.00 sec)
mysql>
可以看到两个值不同,为什么呢?
我们可以看到确实是有5条数据,但是
name
字段中第五行是一个null
,也就是空值,所以我们使用count(name)
的时候,忽略了空值,也就是4条了。
SUM()函数
SUM()
是一个求总和的函数,可以返回指定列值的总和。
例如,我们查询下名为test
的数据表中的age
字段的总和,sql
如下:
mysql> select sum(age) from test;
+----------+
| sum(age) |
+----------+
| 110 |
+----------+
1 row in set (0.00 sec)
mysql>
可以看到,查询的结果是将每一行的指定列的值,进行了一个相加,统计出来的值。
可能有些人就比较好奇了,sum()
函数是否可以统计非数字的值,那么我们可以来尝试下:
mysql> select sum(name) from test;
+-----------+
| sum(name) |
+-----------+
| 0 |
+-----------+
1 row in set, 3 warnings (0.00 sec)
mysql>
可以看到虽然没有报错,但实际上他输出的信息是0
,也就是没有计算出来任何信息,所以sum()
函数不可以进行非数字的计算。
AVG()函数
avg
其实就是average
,也就是平均值,通过计算返回的行数和每一行数据的和,求得指定列数据的平均值;
例如我们可以查询下age
字段的平均值是多少:
mysql> select avg(age) from test;
+----------+
| avg(age) |
+----------+
| 22.0000 |
+----------+
1 row in set (0.00 sec)
mysql>
avg()
函数使用的时候,参数为要计算的列名称,如果要得到多个列的多个平均值,则需要在每一列上都使用avg()
函数。
MAX()函数
MAX()
返回指定列中的最大值;
例如我们可以查询下age
字段中最大的值是多少;
mysql> select max(age) from test;
+----------+
| max(age) |
+----------+
| 24 |
+----------+
1 row in set (0.00 sec)
mysql>
可以看到经过我们的查询,最大值是24
;
那么这个函数是否可以计算字符呢?我们可以尝试下:
mysql> select max(name) from test;
+-----------+
| max(name) |
+-----------+
| zhangsan1 |
+-----------+
1 row in set (0.00 sec)
mysql>
从结果来看,是可以的,他的第一优先级是字段长度来计算的,而后根据ascll
码的大小值进行比较,a
的ascll
码最大,z
的ascll
码最小,依次比较,计算大小。
MIN()函数
MIN()
函数可以返回查询列中的最小值;
例如我们可以使用此函数来查询age
列中最小的值,如下:
mysql> select min(age) from test;
+----------+
| min(age) |
+----------+
| 20 |
+----------+
1 row in set (0.00 sec)
mysql>
min()
函数和max()
函数正好相反,一个计算最大值,一个计算最小值,他们两个函数都可以支持数字类型和字符类型的计算。
至此,本文结束。
往期推荐
发表评论