暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL COUNT函数详解与实例

技术老小子 2025-03-07
7

在本文中,我们将讨论 MySQL 中的 COUNT 函数,并通过示例来帮助理解其用法。COUNT 函数用于计算结果集中返回的数据行数。它可以计算不同或所有值,并且不会计算 NULL 值。

MySQL 中的函数

MySQL 中有许多预定义函数用于对数据行执行各种操作。函数主要分为两类:

  1. 聚合函数
    :仅对一组行进行操作,返回单个聚合结果值。常见的聚合函数包括:COUNT()
    MIN()
    MAX()
    SUM()
     等。
  2. 标量函数
    :对单个输入值进行操作,返回单个结果值。常见的标量函数包括:LEN()
    ROUND()
    SUBSTRING()
    CASE()
    NOW()
     等。

MySQL COUNT() 函数

COUNT 函数用于计算结果集中返回的数据行数。其基本语法如下:

SELECT COUNT(*) AS total_rows FROM tablename;
SELECT COUNT(DISTINCT columnname) AS total_rows FROM tablename;

复制

示例:理解 MySQL COUNT 函数

我们将使用以下的员工(Employee)和项目(Projects)表来理解 MySQL COUNT 函数的用法。

创建和填充数据表

以下 SQL 脚本用于创建和填充员工和项目表:

CREATE DATABASE Company;
USE Company;

CREATETABLE Employee (
    IdINT PRIMARY KEY,
    NameVARCHAR(45NOTNULL,
    Department VARCHAR(45NOTNULL,
    Salary FLOATNOTNULL,
    Gender VARCHAR(45NOTNULL,
    Age INTNOTNULL,
    City VARCHAR(45NOTNULL
);

INSERTINTO Employee VALUES
(1001'张伟''IT'35000'男'25'北京'),
(1002'李娜''HR'45000'女'27'上海'),
(1003'王强''Finance'50000'男'28'广州'),
(1004'刘洋''Finance'50000'男'28'深圳'),
(1005'陈静''HR'75000'女'26'杭州'),
(1006'赵磊''IT'35000'男'25'南京'),
(1007'周敏''HR'45000'女'27'武汉'),
(1008'孙伟''IT'50000'男'28'成都'),
(1009'吴刚''IT'50000'男'28'西安'),
(1010'郑丽''HR'75000'女'26'重庆');

CREATETABLE Projects (
    ProjectId INT PRIMARY KEY,
    Title VARCHAR(200NOTNULL,
    ClientId INT,
    EmployeeId INT,
    StartDate DATETIME,
    EndDate DATETIME,
    FOREIGN KEY (EmployeeId) REFERENCES Employee(Id)
);

INSERTINTO Projects VALUES
(1'开发电子商务网站'11003NOW(), DATE_ADD(NOW(), INTERVAL30DAY)),
(2'为公司制作WordPress网站'11002NOW(), DATE_ADD(NOW(), INTERVAL45DAY)),
(3'管理公司服务器'21007NOW(), DATE_ADD(NOW(), INTERVAL45DAY)),
(4'托管账户无法使用'31009NOW(), DATE_ADD(NOW(), INTERVAL7DAY)),
(5'从桌面应用程序访问MySQL数据库'41010NOW(), DATE_ADD(NOW(), INTERVAL15DAY)),
(6'为我的商业网站开发新的WordPress插件'2NULLNOW(), DATE_ADD(NOW(), INTERVAL10DAY)),
(7'将Web应用程序和数据库迁移到新服务器'2NULLNOW(), DATE_ADD(NOW(), INTERVAL5DAY)),
(8'Android应用程序开发'41004NOW(), DATE_ADD(NOW(), INTERVAL30DAY)),
(9'托管账户无法使用'31001NOW(), DATE_ADD(NOW(), INTERVAL7DAY)),
(10'从桌面应用程序访问MySQL数据库'41008NOW(), DATE_ADD(NOW(), INTERVAL15DAY)),
(11'为我的商业网站开发新的WordPress插件'2NULLNOW(), DATE_ADD(NOW(), INTERVAL10DAY));

复制

示例:计算员工总数

我们可以使用 COUNT 函数来计算员工表中的数据行数。执行以下 SQL 语句:

SELECT COUNT(*) AS Total_Employees FROM Employee;

复制

执行后,您将得到以下输出,表明员工表中有 10 行数据。

使用别名的 COUNT 函数

我们可以使用别名为数据列命名。默认情况下,列名为 COUNT(*)
,我们可以将其更改为 Total_Employees

SELECT COUNT(*) AS Total_Employees FROM Employee;

复制

执行后,输出的列名将为 Total_Employees

计算不同值的数量

我们可以计算每个部门的员工数量。使用 GROUP BY 子句来按部门分组,并应用 COUNT 函数:

SELECT Department, COUNT(*) AS Total_Employees FROM Employee GROUP BY Department;

复制

执行后,您将得到每个部门的员工数量。

MySQL COUNT 函数与连接

我们可以使用 LEFT JOIN 来获取两个表的匹配记录以及左侧表的非匹配记录。以下是一个示例:

SELECT emp.Id AS EmployeeId, emp.Name, prj.Title AS ProjectTitle
FROM Employee AS emp
LEFT OUTER JOIN Projects AS prj ON emp.Id = prj.EmployeeId;

复制

执行后,您将看到 10 行数据,其中 8 行的标题列有字符串值,而剩余的行标题列为 NULL。

如果我们尝试计算标题列的总数据行数,使用以下 SQL 语句:

SELECT COUNT(prj.Title) AS TotalProjects
FROM Employee AS emp
LEFT OUTER JOIN Projects AS prj ON emp.Id = prj.EmployeeId;

复制

执行后,您将得到 8 的输出,因为 COUNT 函数不会计算 NULL 值。

结论

在本文中,我们讨论了 MySQL 中的 COUNT 函数及其用法。希望这些示例能帮助您更好地理解如何使用 COUNT 函数进行数据统计。如果您有任何问题或反馈,请随时与我们联系。


如果你正在从事上位机、自动化、机器视觉、物联网(IOT)项目或数字化转型方面的工作,欢迎加入我的微信圈子!在这里,我们不仅可以轻松畅聊最新技术动态和行业趋势,还能够在技术问题上互相帮助和支持。我会尽量利用我的知识和经验来帮助你解决问题,当然也期待从大家的专业见解中学习和成长。无论你是新手还是老鸟,期待与志同道合的朋友交流心得,一起进步!

文章转载自技术老小子,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论