永洪社区

标题: SQL数据分析:处理重复值 [打印本页]

作者: puffs    时间: 2024-7-29 18:37
标题: SQL数据分析:处理重复值
出现重复的原因多种多样,可能出现重复的场景:在数据输入过程中可能出现bug导致重复数据,在设计表多对多时(使用join)也有可能导致出现重复数据;在分析过程中重复数据需要剔除,否则将得到一个错误的分析结果使得分析工作毫无意义

01检查是否存在重复数据

使用python处理数据的同学就会发现,检查表中是否存在重复值只需“df.duplicated().sum()”即可得到结果,但使用SQL命令会不一样

举例:查询“retail_sales_dataset”表中是否存在重复数据该表共9个字段,由于该方法需要把所有字段名称都列出来,可用“SHOW COLUMNS FROM retail_sales_dataset;”来输出所有字段名称,然后选中字段名复制粘贴即可
方法一:如返回结果为0则无重复数据,文末附上操作视频
SELECT count(*) FROM (
SELECT `Transaction ID`,Date,`Customer ID`,Gender,Age,
`Product Category`,Quantity,`Price per Unit`,`Total Amount`,count(*)as records FROM
retail_sales_dataset GROUP BY 1,2,3,4,5,6,7,8,9
)a WHERE records>1;

输出结果:


方法二:如records>1则列出所有重复内容,如不满足条件则为空
SELECT `Transaction ID`,Date,`Customer ID`,Gender,Age,
`Product Category`,Quantity,`Price per Unit`,`Total Amount`,count(*)as records
FROM
retail_sales_dataset
GROUP BY 1,2,3,4,5,6,7,8,9
HAVING count(*)>1;

输出结果


02使用distinct去重


-- 查询结果去重
SELECT DISTINCT * FROM retail_sales_dataset;

-- 查询去重后的客户ID
SELECT DISTINCT `Customer ID` FROM retail_sales_dataset;

-- 使用join时添加DISTINCT去重,也可以使用其他方法去重
SELECT DISTINCT a.id,a.name
FROM table1 a
join table2 b on a.id=b.id;









欢迎光临 永洪社区 (https://club.yonghongtech.com/) Powered by Discuz! X3.4