在数据分析或数据管理中,经常会遇到需要去除重复值并统计其数量的情况。SQL提供了强大的解决方案来实现这一目标。
使用DISTINCT和COUNT函数
要剔除重复值并计算其个数,可以使用DISTINCT关键字和COUNT函数。DISTINCT可确保只统计唯一值,COUNT可计算满足条件的记录数。语法如下:
sql
SELECT COUNT(DISTINCT column_name)
FROM table_name
WHERE condition;
其中,column_name是要统计其唯一值的列,table_name是目标表,condition是可选的过滤条件。
使用GROUP BY和HAVING子句
另一种 是使用GROUP BY子句对数据进行分组,再使用HAVING子句过滤满足条件的分组。语法如下:
sql
SELECT COUNT(*) AS count
FROM table_name
GROUP BY column_name
HAVING COUNT(*) > 1;
GROUP BY按column_name分组,HAVING COUNT(*) > 1筛选出重复次数大于1的分组,COUNT(*) AS count计算每个分组的记录数。
示例
假设有一个表名为"students",其中包含学生信息,并且student_id列包含重复值。要统计不同学生的个数,可以使用以下SQL语句:
sql
SELECT COUNT(DISTINCT student_id) FROM students;
或者使用GROUP BY和HAVING子句:
sql
SELECT COUNT(*) AS count
FROM students
GROUP BY student_id
HAVING COUNT(*) > 1;
这两种 都会返回不同学生的数量。