Skip to content

Commit 4bd1200

Browse files
cleaning and standeardization custoemr table and handling datyaissues
Co-authored-by: ritsky-project <ritsky598@gmail.com>
1 parent ea66a50 commit 4bd1200

3 files changed

Lines changed: 285 additions & 38 deletions

File tree

explore_database/customers/customers.sql

Lines changed: 26 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
--=============================================================================================
66
--=========================== customers table overview ========================================
77
--=============================================================================================
8-
SELECT TOP (1000) [customer_id]
8+
SELECT TOP (1000)
9+
[customer_id]
910
,[title]
1011
,[first_name]
1112
,[last_name]
@@ -1336,23 +1337,23 @@ SELECT
13361337
END as address
13371338

13381339
,CASE
1339-
WHEN TRIM(LOWER(city)) = 'an diego' THEN 'san diego'
1340-
WHEN TRIM(LOWER(city)) = 'chiago' THEN 'chicago'
1341-
WHEN TRIM(LOWER(city)) = 'chrlotte' THEN 'charlotte'
1342-
WHEN TRIM(LOWER(city)) = 'dalla' THEN 'dallas'
1343-
WHEN TRIM(LOWER(city)) = 'inneapolis' THEN 'minneapolis'
1344-
WHEN TRIM(LOWER(city)) = 'louiville' THEN 'louisville'
1345-
WHEN TRIM(LOWER(city)) = 'milwakee' THEN 'milwaukee'
1346-
WHEN TRIM(LOWER(city)) = 'mnneapolis' THEN 'minneapolis'
1347-
WHEN TRIM(LOWER(city)) = 'oklahoma cty' THEN 'oklahoma city'
1348-
WHEN TRIM(LOWER(city)) = 'ortland' THEN 'portland'
1349-
WHEN TRIM(LOWER(city)) = 'sa diego' THEN 'san diego'
1350-
WHEN TRIM(LOWER(city)) = 'san ntonio' THEN 'san antonio'
1351-
WHEN TRIM(LOWER(city)) = 'sn antonio' THEN 'san antonio'
1352-
WHEN TRIM(LOWER(city)) = '' THEN 'Unknown'
1353-
WHEN TRIM(LOWER(city)) IS NULL THEN 'Unknown'
1354-
ELSE TRIM(LOWER(city))
1355-
END as city
1340+
WHEN TRIM(LOWER(city)) = 'an diego' THEN dbo.TitleCase('san diego')
1341+
WHEN TRIM(LOWER(city)) = 'chiago' THEN dbo.TitleCase('chicago')
1342+
WHEN TRIM(LOWER(city)) = 'chrlotte' THEN dbo.TitleCase('charlotte')
1343+
WHEN TRIM(LOWER(city)) = 'dalla' THEN dbo.TitleCase('dallas')
1344+
WHEN TRIM(LOWER(city)) = 'inneapolis' THEN dbo.TitleCase('minneapolis')
1345+
WHEN TRIM(LOWER(city)) = 'louiville' THEN dbo.TitleCase('louisville')
1346+
WHEN TRIM(LOWER(city)) = 'milwakee' THEN dbo.TitleCase('milwaukee')
1347+
WHEN TRIM(LOWER(city)) = 'mnneapolis' THEN dbo.TitleCase('minneapolis')
1348+
WHEN TRIM(LOWER(city)) = 'oklahoma cty' THEN dbo.TitleCase('oklahoma city')
1349+
WHEN TRIM(LOWER(city)) = 'ortland' THEN dbo.TitleCase('portland')
1350+
WHEN TRIM(LOWER(city)) = 'sa diego' THEN dbo.TitleCase('san diego')
1351+
WHEN TRIM(LOWER(city)) = 'san ntonio' THEN dbo.TitleCase('san antonio')
1352+
WHEN TRIM(LOWER(city)) = 'sn antonio' THEN dbo.TitleCase('san antonio')
1353+
WHEN TRIM(city) = '' THEN 'Unknown'
1354+
WHEN city IS NULL THEN 'Unknown'
1355+
ELSE dbo.TitleCase(TRIM(city))
1356+
END AS city
13561357

13571358
,CASE
13581359
WHEN TRIM(UPPER(state_abbr)) IS NULL OR TRIM(UPPER(state_abbr)) = '' THEN 'Unknown'
@@ -1372,12 +1373,9 @@ SELECT
13721373
ELSE zip_code
13731374
END as zip_code
13741375

1375-
,CASE TRIM(LOWER(country))
1376-
WHEN 'u.s.a' THEN 'United States'
1377-
WHEN 'us' THEN 'United States'
1378-
WHEN 'usa' THEN 'United States'
1379-
WHEN 'united states' THEN 'United States'
1380-
ELSE 'Unknown'
1376+
,CASE
1377+
WHEN TRIM(LOWER(country)) IN ('u.s.a', 'us', 'usa', 'united states') THEN 'United States'
1378+
ELSE 'Unknown'
13811379
END as country
13821380

13831381
,CASE
@@ -1392,18 +1390,10 @@ SELECT
13921390

13931391
,loyalty_points
13941392

1395-
,CASE TRIM(LOWER(is_active))
1396-
WHEN '0' THEN 'False'
1397-
WHEN '1' THEN 'True'
1398-
WHEN 'active' THEN 'True'
1399-
WHEN 'inactive' THEN 'False'
1400-
WHEN 'false' THEN 'False'
1401-
WHEN 'true' THEN 'True'
1402-
WHEN 'n' THEN 'False'
1403-
WHEN 'y' THEN 'True'
1404-
WHEN 'no' THEN 'False'
1405-
WHEN 'yes' THEN 'True'
1406-
ELSE 'Unknown'
1393+
,CASE
1394+
WHEN TRIM(LOWER(is_active)) IN ('1', 'active', 'true', 'y', 'yes') THEN 'True'
1395+
WHEN TRIM(LOWER(is_active)) IN ('0', 'inactive', 'false', 'n', 'no') THEN 'False'
1396+
ELSE 'Unknown'
14071397
END AS is_active
14081398

14091399
,CASE

explore_database/employees/employees.sql

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
--=============================================================================================
77
--=========================== employees table overview ========================================
88
--=============================================================================================
9-
SELECT TOP (1000) [employee_id]
9+
SELECT TOP (1000)
10+
[employee_id]
1011
,[first_name]
1112
,[last_name]
1213
,[full_name]

explore_database/returns/return.sql

Lines changed: 257 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
1-
SELECT TOP (1000) [return_id]
1+
--#############################################################################################
2+
--#################################### RETURNS DATA ###########################################
3+
--#############################################################################################
4+
5+
--=============================================================================================
6+
--================================== return table overview ====================================
7+
--=============================================================================================
8+
SELECT
9+
[return_id]
210
,[original_txn_id]
311
,[original_order_id]
412
,[customer_id]
@@ -17,3 +25,251 @@ SELECT TOP (1000) [return_id]
1725
,[notes]
1826
FROM [bronze].[returns]
1927

28+
--=============================================================================================
29+
--================================== return_id table overview =================================
30+
--=============================================================================================
31+
-- return id data profiling
32+
SELECT
33+
return_id
34+
FROM bronze.returns
35+
WHERE return_id IS NULL
36+
OR TRY_CONVERT(INT, return_id) IS NULL ;
37+
38+
-- duplicate check in return_id
39+
SELECT
40+
*
41+
FROM
42+
(
43+
SELECT
44+
return_id ,
45+
ROW_NUMBER() OVER(PARTITION BY return_id ORDER BY return_id DESC) as flag
46+
FROM bronze.[returns]
47+
)t WHERE flag > 1;
48+
49+
-- return_id cleaning and standerdazition
50+
SELECT
51+
CASE
52+
WHEN return_id < 1 OR TRY_CONVERT(INT, return_id) IS NULL THEN NULL
53+
ELSE TRY_CONVERT(INT, return_id)
54+
END as return_id
55+
FROM bronze.[returns] ;
56+
57+
--=============================================================================================
58+
--=============================== original_txn_id table overview ==============================
59+
--=============================================================================================
60+
-- original_txn_id data profiling
61+
SELECT
62+
original_txn_id
63+
FROM bronze.[returns]
64+
WHERE original_txn_id IS NULL
65+
OR original_txn_id NOT LIKE 'TXN-%'
66+
OR original_txn_id != TRIM(original_txn_id)
67+
OR original_txn_id != UPPER(original_txn_id)
68+
OR LEN(original_txn_id) < 10 ;
69+
70+
-- original_txn_id check in return_id
71+
SELECT
72+
*
73+
FROM
74+
(
75+
SELECT
76+
original_txn_id ,
77+
ROW_NUMBER() OVER(PARTITION BY original_txn_id ORDER BY original_txn_id DESC) as flag
78+
FROM bronze.[returns]
79+
)t WHERE flag > 1;
80+
81+
-- original_txn_id cleaning and standardization
82+
WITH cleaned_txn_ids AS
83+
(
84+
SELECT
85+
CASE
86+
WHEN original_txn_id IS NULL OR original_txn_id NOT LIKE 'TXN-%' OR LEN(original_txn_id) < 10 THEN NULL
87+
ELSE UPPER(TRIM(original_txn_id))
88+
END as original_txn_id
89+
FROM bronze.[returns]
90+
)
91+
SELECT
92+
original_txn_id
93+
FROM cleaned_txn_ids
94+
WHERE original_txn_id IS NULL ;
95+
--=============================================================================================
96+
--=============================== original_order_id table overview ============================
97+
--=============================================================================================
98+
-- original_order_id data profiling
99+
SELECT
100+
original_order_id
101+
FROM bronze.[returns]
102+
WHERE original_order_id IS NULL
103+
OR TRY_CONVERT(INT, original_order_id) IS NULL ;
104+
105+
-- duplicate check in original_order_id
106+
SELECT
107+
*
108+
FROM
109+
(
110+
SELECT
111+
original_order_id ,
112+
ROW_NUMBER() OVER(PARTITION BY original_order_id ORDER BY original_order_id DESC) as flag
113+
FROM bronze.[returns]
114+
)t WHERE flag > 1;
115+
116+
-- original_order_id cleaning and standardization
117+
WITH cleaned_order_ids AS
118+
(
119+
SELECT
120+
CASE
121+
WHEN original_order_id IS NULL OR TRY_CONVERT(INT, original_order_id) IS NULL THEN NULL
122+
ELSE TRY_CONVERT(INT, original_order_id)
123+
END as original_order_id
124+
FROM bronze.[returns]
125+
)
126+
SELECT
127+
original_order_id
128+
FROM cleaned_order_ids
129+
WHERE original_order_id IS NULL;
130+
131+
--=============================================================================================
132+
--=============================== customer_id table overview ==================================
133+
--=============================================================================================
134+
-- customer_id data profiling
135+
SELECT
136+
customer_id
137+
FROM bronze.[returns]
138+
WHERE customer_id IS NULL
139+
OR TRY_CONVERT(INT, customer_id) IS NULL ;
140+
141+
-- duplicate check in customer_id
142+
SELECT
143+
*
144+
FROM
145+
(
146+
SELECT
147+
customer_id ,
148+
ROW_NUMBER() OVER(PARTITION BY customer_id ORDER BY customer_id DESC) as flag
149+
FROM bronze.[returns]
150+
)t WHERE flag > 1;
151+
152+
-- customer_id cleaning and standardization
153+
WITH cleaned_customer_ids AS
154+
(
155+
SELECT
156+
CASE
157+
WHEN customer_id IS NULL OR TRY_CONVERT(INT, customer_id) IS NULL THEN NULL
158+
ELSE TRY_CONVERT(INT, customer_id)
159+
END as customer_id
160+
FROM bronze.[returns]
161+
)
162+
SELECT
163+
customer_id
164+
FROM cleaned_customer_ids
165+
WHERE customer_id IS NULL;
166+
--=============================================================================================
167+
--=============================== customer_name table overview ================================
168+
--=============================================================================================
169+
-- customer_name data profiling
170+
SELECT
171+
customer_name
172+
FROM bronze.[returns]
173+
WHERE customer_name IS NULL
174+
OR customer_name != TRIM(customer_name)
175+
OR customer_name != dbo.TitleCase(customer_name)
176+
OR LEN(customer_name) < 3 ;
177+
178+
-- customer_name cleaning and standardization
179+
WITH cleaned_customer_names AS
180+
(
181+
SELECT
182+
CASE
183+
WHEN customer_name IS NULL OR customer_name != TRIM(dbo.TitleCase(customer_name)) OR LEN(customer_name) < 3 THEN 'Unknown'
184+
ELSE dbo.TitleCase(TRIM(customer_name))
185+
END as customer_name
186+
FROM bronze.[returns]
187+
)
188+
SELECT
189+
customer_name
190+
FROM cleaned_customer_names
191+
WHERE customer_name = 'Unknown' ;
192+
--=============================================================================================
193+
--==================================== product_id table overview ==============================
194+
--=============================================================================================
195+
196+
--=============================================================================================
197+
--=============================== product_name table overview =================================
198+
--=============================================================================================
199+
200+
--=============================================================================================
201+
--=============================== quantity_returned table overview ============================
202+
--=============================================================================================
203+
204+
--=============================================================================================
205+
--=============================== return_date table overview ==================================
206+
--=============================================================================================
207+
208+
--=============================================================================================
209+
--=============================== return_reason table overview ================================
210+
--=============================================================================================
211+
212+
--#############################################################################################
213+
--############################## RETURNS CLEAN DATA ###########################################
214+
--#############################################################################################
215+
216+
SELECT
217+
return_id
218+
,original_txn_id
219+
,original_order_id
220+
,customer_id
221+
,customer_name
222+
,product_id
223+
,product_name
224+
,quantity_returned
225+
,return_date
226+
,return_reason
227+
,refund_amount
228+
,refund_method
229+
,return_channel
230+
,restocked
231+
,return_status
232+
,handled_by_emp_id
233+
,notes
234+
FROM
235+
(
236+
SELECT
237+
CASE
238+
WHEN return_id < 1 OR TRY_CONVERT(INT, return_id) IS NULL THEN NULL
239+
ELSE TRY_CONVERT(INT, return_id)
240+
END as return_id
241+
242+
,CASE
243+
WHEN original_txn_id IS NULL OR original_txn_id NOT LIKE 'TXN-%' OR LEN(original_txn_id) < 10 THEN NULL
244+
ELSE UPPER(TRIM(original_txn_id))
245+
END as original_txn_id
246+
247+
,CASE
248+
WHEN original_order_id IS NULL OR TRY_CONVERT(INT, original_order_id) IS NULL THEN NULL
249+
ELSE TRY_CONVERT(INT, original_order_id)
250+
END as original_order_id
251+
252+
,CASE
253+
WHEN customer_id IS NULL OR TRY_CONVERT(INT, customer_id) IS NULL THEN NULL
254+
ELSE TRY_CONVERT(INT, customer_id)
255+
END as customer_id
256+
257+
,CASE
258+
WHEN customer_name IS NULL OR customer_name != TRIM(dbo.TitleCase(customer_name)) OR LEN(customer_name) < 3 THEN 'Unknown'
259+
ELSE dbo.TitleCase(TRIM(customer_name))
260+
END as customer_name
261+
262+
,[product_id]
263+
,[product_name]
264+
,[quantity_returned]
265+
,[return_date]
266+
,[return_reason]
267+
,[refund_amount]
268+
,[refund_method]
269+
,[return_channel]
270+
,[restocked]
271+
,[return_status]
272+
,[handled_by_emp_id]
273+
,[notes]
274+
FROM [bronze].[returns]
275+
)t ;

0 commit comments

Comments
 (0)