COUNT DISTINCT
统计去重后的数量
简介
COUNT(DISTINCT 字段) 先忽略 NULL,再统计不同值的数量,适合回答“有多少个不同客户或部门”。它不同于 SELECT DISTINCT:前者返回一个统计值,后者返回去重后的明细组合。多个字段的 DISTINCT 支持方式因数据库而异,复杂组合应先构造明确表达式或子查询。
基础语法
SELECT COUNT(DISTINCT department) AS dept_count FROM orders;
示例
COUNT DISTINCT 示例
统计 orders 中不同 department 的数量,重复出现的 Sales 只计算一次。
示例数据表
表名:
orders| department |
|---|
| Sales |
| IT |
| Sales |
| HR |
运行结果
| dept_count |
|---|
| 3 |
常见问题
COUNT(*) 与 COUNT(字段) 相同吗?
不同。COUNT(*) 统计行,COUNT(字段) 忽略该字段为 NULL 的行。
MAX 和 MIN 会保留原记录的其他字段吗?
不会。它们只返回聚合值;需要整行时应再连接、排序或使用窗口函数。
聚合前后的筛选分别写在哪里?
明细条件放在 WHERE,聚合结果条件放在 HAVING。
标签
这篇内容是否清楚?
感谢反馈,我们会把它用于后续内容复核。