SQL入门15

一、算法函数

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    |
+---------+

你可能感兴趣的:(数据库系统概念,sql,数据库)