一、算法函数
1、AVG()函数,求数值列的平均值
它可以用来返回所有列的平均值,也可以用来返回特定列和行的平均值。
具体的计算过程为:其通过对表中行数计数并计算特定数值列的列值之和,求得该列的平均值。
但是当参数 column_name
列中的数据均为空时,结果会返回 NULL。
语法:
select avg(column_name)
from table_name;
例子:
计算课程表 courses
中学生上课人数 student_count
的平均值。
select avg(student_count) --求学生上课人数的平均值
as average_student_count--as取别名
from courses;
其中 AS
关键字的作用是赋予 AVG(student_count)
计算结果列显示在列表中的别名。可以在别名前省略,别名仍然会在执行输出的结果显示。
执行输出结果:
+---------------------------+
| average_student_count |
+---------------------------+
| 929.0000 |
+---------------------------+
2、MAX()函数,返回指定列中的最大数值
最大值函数 MAX() 用于返回指定列中的最大值。它只有一个参数 column_name
,表示指定的列名。但是当参数 column_name
列中的数据均为空时,结果会返回 NULL。
语法:
select MAX(column_name)
from table_name;
例子:
查询课程表 courses
所有课程中最多的学生上课人数。
select MAX(student_count)
from courses;
执行输出结果:
+--------------------+
| MAX(student_count) |
+--------------------+
| 1660 |
+--------------------+
3、MIN()函数返回指定列中的最小值
MIN() 函数的功能与 MAX() 正好相反,它用于返回指定列中的最小值。但与 MAX() 相同的是,它也只有一个参数 column_name
,表示指定的列名,且当参数 column_name
列中的数据均为空时,结果会返回 NULL。
语法:
select MIN(column_name)
from table_name;
例子:
查询课程表 courses
所有课程中最少的学生上课人数 。
select MIN(student_count)
from courses;
执行输出结果:
+--------------------+
| MIN(student_count) |
+--------------------+
| 300 |
+--------------------+
4. 使用 SUM() 函数统计数值列的总数
SUM() 函数用于统计数值列的总数并返回其值。它只有一个参数 column_name
,表示指定的列名,但是当参数 column_name
列中的数据均为空时,结果会返回 NULL。
语法:
select sum(column_name)
from table_name;
例子:
查询课程表 courses
所有课程上课学生人数的总和。
select sum(student_count) as all_student_count
from courses;
执行的输出结果:
+-------------------+
| all_student_count |
+-------------------+
| 9290 |
+-------------------+
5.使用 COUNT() 函数计数
COUNT() 函数用于计数,可利用其确定表中行的数目或者符合特定条件的行的数目。当COUNT() 中的参数不同时,其的用途也是有明显的不同的,主要可分为以下三种情况:COUNT(column_name) 、COUNT( * ) 和 COUNT(DISTINCT column_name) 。
5.1 COUNT( column_name )
COUNT(column_name) 函数会对指定列具有的行数进行计数,但是会除去值为 NULL 的行。该函数主要用于查看各列数据的数量情况,便于统计数据的缺失值。
假如出现某一列的数据全为 NULL 值的情况,
使用COUNT( column_name ) 函数对该列进行计数,会返回 0。
语法:
select count(column_name)
from table_name;
5.2 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),即查询有多少条记录。
例子:
统计 courses
表中课程在2020年1月到5月之间的课程数量。
select count(*) as number_of_courses
from courses
where created_at between '2020-01-01' and '2020-05-31';
执行输出结果:
+------------------+
| number_of_course |
+------------------+
| 2 |
+------------------+
5.3 COUNT(DISTINCT column_name)
COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目
语法:
select count(distinct column_name)
from table_name;
例子:
统计课程表 courses
中不同老师 teacher_id
的记录数量
select count(distinct teacher_id) as number_of_teacher
from courses;
执行输出结果:
+-------------------+
| number_of_teacher |
+-------------------+
| 3 |
+-------------------+
二、时间函数
1、getdate() --返回当前系统日期和时间。
2、datediff --返回跨两个指定日期的日期和时间边界数。
DATEDIFF ( datepart , startdate , enddate );
例子:
返回2024-01-01与当天有多少天
select datediff(dd,'2024-01-01',getdate()) as date;
执行输出结果:
+---------+
| date |
+---------+
| 9 |
+---------+