SQL COUNT() 函数
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_id | name | salary |
|---|---|---|
| 1 | Tom | 5000 |
| 2 | Jane | 6000 |
| 3 | Bob | 7000 |
| 4 | Alice | 8000 |
| 5 | Mike | NULL |
你可以使用 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;
输出:
| department | employee_count |
|---|---|
| Sales | 2 |
| HR | 1 |
| IT | 2 |
6. 示例 4:使用 COUNT() 和 HAVING 进行条件筛选
HAVING 子句用于过滤 GROUP BY 聚合结果。假设你只想统计员工数大于 1 的部门:
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department
HAVING COUNT(*) > 1;
输出:
| department | employee_count |
|---|---|
| Sales | 2 |
| IT | 2 |
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 BY 和 HAVING 结合使用时,可以帮助你进行更复杂的数据分析。