如何通过SQL语句进行数据清洗和转换操作?
数据清洗和转换是数据预处理的关键步骤,通常包括去除重复值、填充缺失值、数据类型转换、数据格式化、数据筛选等。在SQL中,你可以使用各种语句和函数来执行这些操作。
使用DISTINCT
关键字可以去除查询结果中的重复行。
select DISTINCT column1, column2, ... | |
from table_name; |
如果你想去除表中的所有重复行,并只保留一行,可以使用ROW_NUMBER()
窗口函数。
WITH CTE AS ( | |
select *, ROW_NUMBER() OVER(PARTITION BY column1, column2, ... ORDER BY some_column) AS rn | |
from table_name | |
) | |
delete from CTE where rn > 1; |
使用COALESCE()
或ISNULL()
函数(取决于数据库)可以填充缺失值。
-- 使用COALESCE()函数 | |
update table_name | |
SET column_name = COALESCE(column_name, 'default_value') | |
where column_name IS NULL; | |
-- 使用ISNULL()函数(主要在SQL Server中使用) | |
update table_name | |
SET column_name = ISNULL(column_name, 'default_value') | |
where column_name IS NULL; |
使用CAST()
或CONVERT()
函数(取决于数据库)可以进行数据类型转换。
-- 使用CAST()函数 | |
select CAST(column_name AS new_data_type) | |
from table_name; | |
-- 使用CONVERT()函数(主要在SQL Server中使用) | |
select CONVERT(new_data_type, column_name) | |
from table_name; |
你可以使用各种字符串函数来格式化数据,如UPPER()
, LOWER()
, TRIM()
, REPLACE()
, SUBSTRING()
, CONCAT()
等。
例如,将字符串转为大写:
select UPPER(column_name) | |
from table_name; |
使用where
子句可以根据条件筛选数据。你还可以使用and
, OR
, 和NOT
操作符组合多个条件。对于复杂的筛选,可以使用子查询、JOIN 或 CASE 语句。
6. 其他常见的数据清洗和转换操作
CASE
语句进行条件转换。REGEXP
或LIKE
进行模式匹配和替换(取决于数据库支持)。SUM()
, AVG()
, MIN()
, MAX()
等进行数据汇总。LEAD()
, LAG()
, FIRST_VALUE()
, LAST_VALUE()
等进行数据间的比较和计算。select
语句进行预览,确保你的操作是正确的。