avatarSQL Fundamentals


All About SQL Data Cleaning: With Code Examples

Data cleaning, often referred to as data cleansing or data scrubbing, is a crucial step in the data preprocessing pipeline. It involves identifying and correcting or removing errors and inconsistencies in datasets to improve data quality. In this article, we’ll explore various SQL techniques for data cleaning, complete with code examples.

Photo from Pexels

Why Data Cleaning Matters

Data, often acquired from multiple sources, can be messy and error-prone. Here’s why data cleaning is essential:

  1. Data Accuracy: Clean data leads to accurate insights and informed decision-making.
  2. Model Performance: Machine learning models perform better with clean data.
  3. Data Consistency: Consistent data simplifies analysis and reporting.
  4. Enhanced Data Quality: Clean data contributes to better data quality.

Common Data Cleaning Tasks

1. Removing Duplicates

Duplicate records can skew analysis. To remove duplicates from a table, use the DISTINCT keyword or GROUP BY clause:


2. Handling Missing Values

Missing values can impact results. To identify rows with missing values, use IS NULL or IS NOT NULL:

SELECT * FROM customers WHERE email IS NULL;

You can replace missing values with COALESCE or CASE statements.

3. Correcting Data Types

Ensure data types match column requirements. To cast data types, use CAST or CONVERT:

SELECT CAST(column_name AS new_data_type) FROM table_name;

4. Standardizing Text Data

Text data may have inconsistent formatting. Use UPDATE with string functions to standardize:

UPDATE products
SET product_name = UPPER(product_name)
WHERE category = 'clothing';

5. Handling Outliers

Outliers can distort analysis. Identify outliers with percentile calculations and remove or adjust them.

WHERE amount < (Q1 - 1.5 * IQR) OR amount > (Q3 + 1.5 * IQR);

6. Date and Time Cleaning

Date and time formats vary. To standardize, use date functions like DATE_FORMAT:

SELECT DATE_FORMAT(order_date, '%Y-%m-%d') AS formatted_date FROM orders;

7. Removing Special Characters

Special characters can hinder analysis. Remove them with REGEXP_REPLACE:

SELECT REGEXP_REPLACE(product_name, '[^a-zA-Z0-9 ]', '') AS cleaned_name FROM products

8. Handling Inconsistent Casing

Inconsistent casing can lead to errors. Use UPPER or LOWER functions for uniformity:

SELECT UPPER(last_name) AS upper_name FROM employees;

Advanced Data Cleaning Techniques

1. Fuzzy Matching

Fuzzy matching identifies similar but not identical records. SQL libraries often have fuzzy matching functions:

SELECT * FROM customers
WHERE SOUNDEX(last_name) = SOUNDEX('Smith');

2. Data Imputation

For missing data, imputation methods like mean, median, or regression can be used.

SELECT AVG(age) AS avg_age FROM employees;

3. Handling Categorical Data

Convert categorical data into numerical values for analysis. Use CASE statements or JOIN with lookup tables:

        WHEN customers.customer_type = 'Corporate' THEN 1
        WHEN customers.customer_type = 'Individual' THEN 2
        ELSE 3
    END AS customer_type_code
FROM orders
JOIN customers ON orders.customer_id = customers.customer_id;

Best Practices for Data Cleaning

  1. Document Cleaning Steps: Keep a record of data cleaning steps for reproducibility.
  2. Backup Data: Before cleaning, make backups to avoid accidental data loss.
  3. Use SQL Libraries: Leverage SQL libraries that provide specialized functions for data cleaning tasks.
  4. Iterative Process: Data cleaning is often iterative; revisit and revise as needed.
  5. Validation: Validate cleaned data to ensure it meets analysis requirements.

Remember, data cleaning is not a one-time task; it’s an ongoing process to maintain data quality. Investing time in thorough data cleaning pays off by ensuring that your analysis and models are built on a solid foundation of reliable data.

By mastering SQL data cleaning techniques, you’ll be better equipped to handle real-world, messy datasets and extract meaningful insights with confidence.

SQL Fundamentals

Thank you for your time and interest! 🚀 You can find even more content at SQL Fundamentals 💫


Thank you for reading until the end. Before you go:

  • Please consider clapping and following the writer! 👏
  • Follow us on Twitter(X), LinkedIn, and YouTube.
  • Visit Stackademic.com to find out more about how we are democratizing free programming education around the world.

If you enjoyed this article, consider trying out the AI service I recommend. It provides the same performance and functions to ChatGPT Plus(GPT-4) but more cost-effective, at just $6/month (Special offer for $1/month). Click here to try ZAI.chat.

Data Science
Data Scientist
Data Analysis
Recommended from ReadMedium