SQL数据清洗需先识别再分类后处置空值与异常值:空值分NULL和空字符串分别查询并统计缺失率;关键字段为空则删除,数值型填0或均值,分类字段填'unknown';异常值依业务规则界定并标记后谨慎处理。

SQL业务数据清洗中,空值和异常值是影响分析结论准确性的两大核心问题。处理不能一删了之,需结合业务逻辑判断:空值是否代表“未发生”还是“数据丢失”,异常值是否真实存在还是录入错误。关键在于先识别、再分类、后处置。
空值不是简单的“空白”,而是数据库中的 NULL 或空字符串(''),二者含义不同,需分开查:
IS NULL,例如 SELECT * FROM orders WHERE amount IS NULL;
= '',例如 SELECT * FROM users WHERE phone = '';
SELECT COUNT(*) AS total, COUNT(user_id) AS user_id_nonnull, 1 - COUNT(user_id)/COUNT(*) AS user_id_null_ratioFROM userbehavior;
不建议全局删除,应分场景处理:
DELETE FROM orders WHERE order_id IS NULL;
UPDATE sales SET revenue = COALESCE(revenue, 0);
'unknown' 或 'other',保留维度可用性:UPDATE userbehavior SET source = COALESCE(source, 'unknown');
异常 ≠ 错误,要靠业务常识划界。例如:
WHERE age 120
SELECT * FROM orders WHERE amount > (SELECT AVG(amount)*5 FROM orders);
WHERE FROM_UNIXTIME(`timestamp`, '%Y-%m-%d') NOT BETWEEN '2017-11-25' AND '2017-12-03';
推荐先标记再处理,避免误删:
ALTER TABLE userbehavior ADD COLUMN clean_flag VARCHAR(20);
UPDATE userbehavior SET clean_flag = 'age_outlier' WHERE age 120;
DELETE FROM userbehavior WHERE clean_flag = 'age_outlier';
CASE WHEN 替换为上限值:SELECT item_id, CASE WHEN price > 10000 THEN 10000 ELSE price END AS clean_price FROM products;
以上就是SQL业务数据清洗如何处理_空值异常值处理完整流程【指导】的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号