MariaDB COUNT() 函数的基础用法与实例

本文将介绍一个常用的聚合函数,即 COUNT() 函数,它用于统计某个列或表达式的非空值的个数。

发布于

MariaDB 是一个开源的关系型数据库管理系统,它是 MySQL 的一个分支。MariaDB 提供了许多 SQL 函数,用于对数据进行各种操作和计算。本文将介绍一个常用的聚合函数,即 COUNT() 函数,它用于统计某个列或表达式的非空值的个数。

语法

COUNT() 函数的语法如下:

COUNT(expr)

其中,expr 可以是一个列名,也可以是一个表达式,比如 col1 + col2COUNT() 函数会忽略 NULL 值,只计算非空值的个数。如果 expr 是一个常量,或者没有匹配的行,那么 COUNT() 函数的返回值为 0。

如果使用 * 作为参数,那么 COUNT() 函数会统计所有的行数,包括 NULL 值。例如:

COUNT(*)

实例

下面我们来看一些 COUNT() 函数的实例,以便更好地理解它的用法。我们将使用一个名为 students 的表,它包含了学生的姓名、性别、年龄、班级和成绩等信息。表的结构和部分数据如下:

CREATE TABLE students (
  id INT PRIMARY KEY,
  name VARCHAR(20),
  gender CHAR(1),
  age INT,
  class VARCHAR(10),
  score INT
);

INSERT INTO students VALUES
(1, 'Alice', 'F', 18, 'A1', 85),
(2, 'Bob', 'M', 19, 'A2', 90),
(3, 'Charlie', 'M', 18, 'A1', 80),
(4, 'David', 'M', 20, 'A3', 95),
(5, 'Eve', 'F', 19, 'A2', 88),
(6, 'Frank', 'M', 18, 'A1', 82),
(7, 'Grace', 'F', 20, 'A3', 92),
(8, 'Helen', 'F', 19, 'A2', 86),
(9, 'Iris', 'F', 18, 'A1', 84),
(10, 'Jack', 'M', 20, 'A3', 94);

Example 1: 统计学生表中的总行数

我们可以使用 COUNT(*) 函数,对学生表进行统计,得到学生表中的总行数。SQL 语句如下:

SELECT COUNT(*) AS total_count FROM students;

运行结果如下:

+-------------+
| total_count |
+-------------+
|          10 |
+-------------+

这说明学生表中有 10 条记录。

Example 2: 统计学生表中非空姓名的个数

我们也可以使用 COUNT() 函数,对 name 列进行统计,得到学生表中非空姓名的个数。SQL 语句如下:

SELECT COUNT(name) AS name_count FROM students;

运行结果如下:

+------------+
| name_count |
+------------+
|         10 |
+------------+

这说明学生表中没有空姓名的记录。

Example 3: 统计学生表中每个班级的学生个数

我们还可以使用 COUNT() 函数,结合 GROUP BY 子句,对 class 列进行分组统计,得到学生表中每个班级的学生个数。SQL 语句如下:

SELECT class, COUNT(*) AS class_count FROM students GROUP BY class;

运行结果如下:

+-------+-------------+
| class | class_count |
+-------+-------------+
| A1    |           4 |
| A2    |           3 |
| A3    |           3 |
+-------+-------------+

这说明学生表中有三个班级,分别是 A1,A2 和 A3,每个班级的学生个数分别是 4,3 和 3。

Example 4: 统计学生表中每个性别的学生个数

我们也可以使用 COUNT() 函数,结合 GROUP BY 子句,对 gender 列进行分组统计,得到学生表中每个性别的学生个数。SQL 语句如下:

SELECT gender, COUNT(*) AS gender_count FROM students GROUP BY gender;

运行结果如下:

+--------+--------------+
| gender | gender_count |
+--------+--------------+
| F      |            5 |
| M      |            5 |
+--------+--------------+

这说明学生表中有两种性别,分别是男性和女性,每种性别的学生个数都是 5。

Example 5: 统计学生表中成绩大于等于 90 的学生个数

我们还可以使用 COUNT() 函数,结合 WHERE 子句,对 score 列进行条件统计,得到学生表中成绩大于等于 90 的学生个数。SQL 语句如下:

SELECT COUNT(*) AS high_score_count FROM students WHERE score >= 90;

运行结果如下:

+------------------+
| high_score_count |
+------------------+
|                4 |
+------------------+

这说明学生表中有 4 个学生的成绩大于等于 90。

相关函数

除了 COUNT() 函数,MariaDB 还提供了一些其他的聚合函数,用于对数据进行不同的统计和计算。下面我们简单介绍一些常用的聚合函数,并给出一些例子。

  • COUNT-DISTINCT 函数:用于统计某个列或表达式的不同值的个数。如果没有匹配的行,或者所有的值都是 NULL,那么返回值为 0。例如:

    -- 统计学生表中不同性别的个数
    SELECT COUNT(DISTINCT gender) AS gender_count FROM students;
    
    -- 统计学生表中不同年龄的个数
    SELECT COUNT(DISTINCT age) AS age_count FROM students;
    
  • SUM 函数:用于计算某个列或表达式的非空值的总和。如果没有匹配的行,或者所有的值都是 NULL,那么返回值为 NULL。例如:

    -- 计算学生表中所有学生的成绩总和
    SELECT SUM(score) AS score_sum FROM students;
    
    -- 计算学生表中每个班级的成绩总和
    SELECT class, SUM(score) AS score_sum FROM students GROUP BY class;
    
  • AVG 函数:用于计算某个列或表达式的非空值的平均值。如果没有匹配的行,或者所有的值都是 NULL,那么返回值为 NULL。例如:

    -- 计算学生表中所有学生的成绩平均值
    SELECT AVG(score) AS score_avg FROM students;
    
    -- 计算学生表中每个班级的成绩平均值
    SELECT class, AVG(score) AS score_avg FROM students GROUP BY class;
    
  • MIN 函数:用于找出某个列或表达式的非空值的最小值。如果没有匹配的行,或者所有的值都是 NULL,那么返回值为 NULL。例如:

    -- 找出学生表中所有学生的成绩最低值
    SELECT MIN(score) AS score_min FROM students;
    
    -- 找出学生表中每个班级的成绩最低值
    SELECT class, MIN(score) AS score_min FROM students GROUP BY class;
    
  • MAX 函数:用于找出某个列或表达式的非空值的最大值。如果没有匹配的行,或者所有的值都是 NULL,那么返回值为 NULL。例如:

    -- 找出学生表中所有学生的成绩最高值
    SELECT MAX(score) AS score_max FROM students;
    
    -- 找出学生表中每个班级的成绩最高值
    SELECT class, MAX(score) AS score_max FROM students GROUP BY class;
    

    运行结果如下:

    +-------------+
    | score_max   |
    +-------------+
    |          95 |
    +-------------+
    
    +-------+-------------+
    | class | score_max   |
    +-------+-------------+
    | A1    |          85 |
    | A2    |          90 |
    | A3    |          95 |
    +-------+-------------+

    这说明学生表中所有学生的成绩最高值是 95,每个班级的成绩最高值分别是 85,90 和 95。

结论

本文介绍了 MariaDB 的一个常用的聚合函数,即 COUNT() 函数,它用于统计某个列或表达式的非空值的个数。我们还介绍了一些其他的聚合函数,如 COUNT-DISTINCTSUMAVGMINMAX,它们用于对数据进行不同的统计和计算。这些函数在数据分析和报表中非常有用,可以帮助我们快速地获取数据的概况和特征。