SQLPathLab
聚合统计 · 进阶

COUNT DISTINCT

统计去重后的数量

简介

COUNT(DISTINCT 字段) 先忽略 NULL,再统计不同值的数量,适合回答“有多少个不同客户或部门”。它不同于 SELECT DISTINCT:前者返回一个统计值,后者返回去重后的明细组合。多个字段的 DISTINCT 支持方式因数据库而异,复杂组合应先构造明确表达式或子查询。

基础语法

SELECT COUNT(DISTINCT department) AS dept_count FROM orders;

示例

COUNT DISTINCT 示例

统计 orders 中不同 department 的数量,重复出现的 Sales 只计算一次。

示例数据表

表名:orders
orders
department
Sales
IT
Sales
HR

运行结果

result
dept_count
3

常见问题

COUNT(*) 与 COUNT(字段) 相同吗?

不同。COUNT(*) 统计行,COUNT(字段) 忽略该字段为 NULL 的行。

MAX 和 MIN 会保留原记录的其他字段吗?

不会。它们只返回聚合值;需要整行时应再连接、排序或使用窗口函数。

聚合前后的筛选分别写在哪里?

明细条件放在 WHERE,聚合结果条件放在 HAVING。

标签

聚合统计常用

这篇内容是否清楚?