云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

SQLite - 聚合函数 - COUNT(sql语句中聚合函数)

jxf315 2025-03-26 13:22:54 教程文章 35 ℃

在 SQLite 中,COUNT 函数是一个非常实用的聚合函数,主要用于统计记录的数量。它有不同的使用方式,下面为你详细介绍其使用方法并给出具体示例。

基本语法

COUNT 函数常见的使用形式有以下两种:

  1. COUNT(*):统计查询结果集中的所有行数,无论列中是否包含 NULL 值。
  2. COUNT(column_name):统计指定列中非 NULL 值的行数。

使用示例

1. 使用COUNT(*)统计所有行数

假设我们有一个名为 employees 的表,用于存储员工信息,包含 employee_id、name 和 department 等列。

-- 创建示例表
CREATE TABLE employees (
    employee_id INTEGER PRIMARY KEY,
    name TEXT,
    department TEXT
);

-- 插入示例数据
INSERT INTO employees (name, department) VALUES ('Alice', 'HR');
INSERT INTO employees (name, department) VALUES ('Bob', 'IT');
INSERT INTO employees (name, department) VALUES ('Charlie', 'Finance');

-- 使用 COUNT(*) 统计员工数量
SELECT COUNT(*) AS total_employees FROM employees;

在上述查询中,COUNT(*) 会统计 employees 表中的所有行数,这里结果为 3,并将结果存储在 total_employees 列中。

2. 使用COUNT(column_name)统计非NULL值的行数

假设 employees 表中有一个 email 列,部分员工可能没有提供邮箱信息,即该列存在 NULL 值。

-- 修改表结构,添加 email 列
ALTER TABLE employees ADD COLUMN email TEXT;

-- 更新部分员工的邮箱信息
UPDATE employees SET email = 'alice@example.com' WHERE employee_id = 1;
UPDATE employees SET email = 'bob@example.com' WHERE employee_id = 2;

-- 使用 COUNT(email) 统计有邮箱信息的员工数量
SELECT COUNT(email) AS employees_with_email FROM employees;

在这个查询中,COUNT(email) 只会统计 email 列中非 NULL 值的行数,这里结果为 2,并将结果存储在 employees_with_email 列中。

3. 结合GROUP BY子句使用COUNT函数

假设我们想统计每个部门的员工数量,可以使用 GROUP BY 子句按 department 列进行分组,然后使用 COUNT 函数统计每个组中的行数。

-- 使用 COUNT(*) 结合 GROUP BY 统计每个部门的员工数量
SELECT 
    department,
    COUNT(*) AS employees_per_department
FROM 
    employees
GROUP BY 
    department;

这个查询会将 employees 表按 department 列的值进行分组,然后分别统计每个部门的员工数量。例如,如果有 2 名员工在 'IT' 部门,1 名员工在 'HR' 部门,查询结果会显示每个部门及其对应的员工数量。

4. 结合HAVING子句筛选统计结果

如果我们只想查看员工数量大于 1 的部门,可以使用 HAVING 子句对 GROUP BY 分组后的结果进行筛选。

-- 使用 COUNT(*) 结合 GROUP BY 和 HAVING 筛选员工数量大于 1 的部门
SELECT 
    department,
    COUNT(*) AS employees_per_department
FROM 
    employees
GROUP BY 
    department
HAVING 
    COUNT(*) > 1;

在这个查询中,HAVING 子句会筛选出员工数量大于 1 的部门,只返回满足条件的部门及其员工数量。

注意事项

  • COUNT(*) 会统计所有行,包括包含 NULL 值的行;而 COUNT(column_name) 只统计指定列中非 NULL 值的行。
  • 在使用 GROUP BY 子句时,COUNT 函数会对每个分组分别进行统计。
  • HAVING 子句用于筛选分组后的统计结果,而 WHERE 子句用于筛选原始数据行。

Tags:

最近发表
标签列表