SELECT customer_id, account_type, balance FROM accounts WHERE balance > 1000000;
SELECT c.customer_name, c.customer_type, a.account_type, a.balance FROM customers c INNER JOIN accounts a ON c.customer_id = a.customer_id WHERE c.customer_type = 'Corporate';
-- Finding missing values in critical fields
SELECT COUNT(*) AS missing_email_count
FROM customers
WHERE email IS NULL OR email = '';
-- Identifying inconsistent date formats
SELECT transaction_date, COUNT(*)
FROM transactions
GROUP BY transaction_date
ORDER BY transaction_date;
SELECT column_name, table_name
FROM information_schema.columns
WHERE column_name LIKE '%passport%'
OR column_name LIKE '%ssn%'
OR column_name LIKE '%birth%';
SELECT t.table_name, c.column_name
FROM information_schema.tables t
JOIN information_schema.columns c
ON t.table_name = c.table_name
LEFT JOIN data_classification dc
ON t.table_name = dc.table_name
AND c.column_name = dc.column_name
WHERE (c.column_name LIKE '%passport%'
OR c.column_name LIKE '%ssn%')
AND dc.classification_level IS NULL;
-- Comparing source and target data to verify transformations
SELECT COUNT(*) AS source_count FROM source_transactions;
SELECT COUNT(*) AS target_count FROM reporting_transactions;
-- Checking if transformation rules are applied correctly
SELECT source.customer_segment,
AVG(source.transaction_amount) AS source_avg,
AVG(target.transaction_amount) AS target_avg
FROM source_transactions source
JOIN reporting_transactions target
ON source.transaction_id = target.source_transaction_id
GROUP BY source.customer_segment;
SELECT a.account_id, a.account_type, a.balance,
COALESCE(dc.classification_level, 'Unclassified') AS classification
FROM accounts a
LEFT JOIN data_classification dc
ON a.account_id = dc.data_element_id
WHERE a.balance > 1000000
AND (dc.classification_level IS NULL
OR dc.classification_level != 'Restricted');