1. 什么是数据去重?
数据去重是指在数据库中对重复的数据进行删除或合并,使得每一条数据都是唯一的。
在MSSQL中,通常使用DISTINCT或GROUP BY语句来进行数据去重。
2. DISTINCT去重技巧
2.1 基本用法
DISTINCT用于返回唯一不同的值。它可用于任何数据类型,包括数值、日期、字符串等。
下面是一个基本的DISTINCT查询:
SELECT DISTINCT column1, column2, ...
FROM table_name;
其中column1、column2为要去重的列名,table_name为表名。
例如,我们有以下的Student表:
StudentID | FirstName | LastName | Age
--------------------------------------
1 | John | Smith | 20
2 | Mary | Johnson | 22
3 | John | Smith | 20
4 | David | Kim | 21
使用以下查询语句:
SELECT DISTINCT FirstName, LastName
FROM Student;
将返回以下结果:
FirstName | LastName
--------------------
John | Smith
Mary | Johnson
David | Kim
可以看到,重复的John Smith被去除了。
2.2 结合查询去重
DISTINCT还可以结合其他查询语句使用,例如JOIN、WHERE等。
下面是一个结合JOIN和DISTINCT的查询:
SELECT DISTINCT Student.FirstName, Course.CourseName
FROM Student
JOIN Course
ON Student.StudentID = Course.StudentID;
其中,我们使用JOIN语句连接了Student和Course表,然后使用DISTINCT去重Student.FirstName和Course.CourseName。
3. GROUP BY去重技巧
3.1 基本用法
GROUP BY语句用于根据一个或多个列对记录进行分组。
下面是一个基本的GROUP BY查询:
SELECT column1, COUNT(*)
FROM table_name
GROUP BY column1;
其中COUNT(*)用于计算每个分组中的记录数。
例如,我们有以下的Orders表:
OrderID | CustomerID | OrderDate | Total
---------------------------------------
1 | 1 | 2020-01-01| 100
2 | 2 | 2020-01-02| 200
3 | 1 | 2020-01-03| 150
4 | 3 | 2020-01-04| 120
5 | 2 | 2020-01-05| 180
使用以下查询语句:
SELECT CustomerID, COUNT(*)
FROM Orders
GROUP BY CustomerID;
将返回以下结果:
CustomerID | COUNT(*)
---------------------
1 | 2
2 | 2
3 | 1
可以看到,记录被按照CustomerID进行了分组,并统计了每个分组中的记录数。
3.2 HAVING子句
HAVING子句用于筛选分组数据。
下面是一个结合HAVING子句和GROUP BY的查询:
SELECT ProductID, AVG(Price)
FROM Products
GROUP BY ProductID
HAVING AVG(Price) > 50;
其中,我们使用AVG(Price)计算每个产品的平均价格,并将结果按照ProductID分组,在HAVING子句中筛选平均价格大于50的记录。
4. 结语
数据去重是数据清洗的重要步骤,可以提高数据的准确性和可信度。在MSSQL中,可以使用DISTINCT和GROUP BY语句进行数据去重。