SQL COUNT() 函数
                           
天天向上
发布: 2025-02-16 08:40:03

原创
389 人浏览过

COUNT() 函数,它是 SQL 中的另一个常用聚合函数,用于计算某个字段或表中行的数量。

1. COUNT() 函数简介

COUNT() 函数用于计算符合条件的行数。它可以计算某个列中非 NULL 值的数量,或者计算符合指定条件的总行数。

2. 基本语法

SELECT COUNT(column_name)
FROM table_name
WHERE condition;
  • column_name:用于计数的列。如果指定的列中有 NULL 值,COUNT(column_name) 会忽略这些值。
  • table_name:数据表的名字。
  • condition:可选,用于过滤数据的条件。

如果你希望计算表中的所有行数,而不考虑某列的 NULL 值,可以使用 COUNT(*)

3. 示例 1:计算表中的行数

假设你有一个员工表 employees,表结构如下:

employee_idnamesalary
1Tom5000
2Jane6000
3Bob7000
4Alice8000
5MikeNULL

你可以使用 COUNT(*) 来计算表中所有行的数量:

SELECT COUNT(*) AS total_employees
FROM employees;

输出:

total_employees
5

4. 示例 2:计算某列非 NULL 值的行数

如果你想计算 salary 列中非 NULL 值的数量,可以使用 COUNT(salary)。它只会计算 salary 列中有实际值的行:

SELECT COUNT(salary) AS non_null_salaries
FROM employees;

输出:

non_null_salaries
4

5. 示例 3:使用 COUNT() 结合 GROUP BY

你还可以将 COUNT() 函数与 GROUP BY 子句一起使用,按某个字段分组统计每组的行数。例如,按部门统计员工数量:

假设 employees 表中有一个 department 字段,记录员工所属的部门,你可以计算每个部门的员工数量:

SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;

输出:

departmentemployee_count
Sales2
HR1
IT2

6. 示例 4:使用 COUNT()HAVING 进行条件筛选

HAVING 子句用于过滤 GROUP BY 聚合结果。假设你只想统计员工数大于 1 的部门:

SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department
HAVING COUNT(*) > 1;

输出:

departmentemployee_count
Sales2
IT2

7. 示例 5:计算符合特定条件的行数

假设你只想统计工资大于 6000 的员工数量,可以在 WHERE 子句中添加条件:

SELECT COUNT(*) AS high_salary_count
FROM employees
WHERE salary > 6000;

输出:

high_salary_count
3

8. 进阶用法:COUNT()DISTINCT

COUNT(DISTINCT column_name) 用于计算某列中不同值的数量。这在需要计算不重复数据时非常有用。

例如,计算不同工资的员工数量:

SELECT COUNT(DISTINCT salary) AS unique_salaries
FROM employees;

输出:

unique_salaries
4

总结

COUNT() 是一个非常实用的聚合函数,常用于计算行数、非 NULL 值的数量,或者按特定条件统计数据。它与 GROUP BYHAVING 结合使用时,可以帮助你进行更复杂的数据分析。

发表回复 0

Your email address will not be published. Required fields are marked *