SELECT DISTINCT shape, INITCAP(shape) AS shape_clean
FROM (
SELECT SPLIT_PART(SPLIT_PART(sighting_report, 'Duration', 1), 'Shape: ', 2) AS shape
FROM ufo
) AS A;
SELECT duration, TRIM(duration) AS duration_clean
FROM (
SELECT SPLIT_PART(sighting_report, 'Duration:', 2) AS duration
FROM ufo
) AS A;
SELECT
SPLIT_PART(SPLIT_PART(SPLIT_PART(sighting_report, '(Entered', 1), 'Occurred : ', 2), 'Reported', 1) AS occurred,
SPLIT_PART(SPLIT_PART(SPLIT_PART(SPLIT_PART(sighting_report, 'Post', 1), 'Reported: ', 2), ' AM', 1), ' PM', 1) AS reported,
SPLIT_PART(SPLIT_PART(sighting_report, 'Location', 1), 'Posted: ', 2) AS posted
FROM ufo;
<날짜 타입 변환>
-- 타입 변환 에러가 발생하지 않도록, 현재 저장된 문자열이 월/일/연도(month/day/year)의 포맷으로 저장되어 있음을 명시
SET DATESTYLE = mdy;
SELECT
occurred::timestamp,
reported::timestamp,
posted::date
FROM (
SELECT
SPLIT_PART(SPLIT_PART(SPLIT_PART(sighting_report, '(Entered', 1), 'Occurred : ', 2), 'Reported', 1) AS occurred,
SPLIT_PART(SPLIT_PART(SPLIT_PART(SPLIT_PART(sighting_report, 'Post', 1), 'Reported: ', 2), ' AM', 1), ' PM', 1) AS reported,
SPLIT_PART(SPLIT_PART(sighting_report, 'Location', 1), 'Posted: ', 2) AS posted
FROM ufo
) AS A
WHERE LENGTH(occurred) >= 8
AND LENGTH(reported) >= 8
AND LENGTH(posted) >= 8
ORDER BY 1;
6/2/2023
일 경우 LENGTH가 8이기 때문에 저 형식을 기준으로 한 것 같다.-- 타입 변환 에러가 발생하지 않도록, 현재 저장된 문자열이 월/일/연도(month/day/year)의 포맷으로 저장되어 있음을 명시
SELECT
(CASE
WHEN occurred = '' THEN NULL
WHEN LENGTH(occurred) < 8 THEN NULL
ELSE occurred::TIMESTAMP
END) AS occurred,
(CASE
WHEN LENGTH(reported) < 8 THEN NULL
ELSE reported::TIMESTAMP
END) AS reported,
(CASE
WHEN LENGTH(posted) < 8 THEN NULL
ELSE posted::TIMESTAMP
END) AS posted
FROM (
SELECT
SPLIT_PART(SPLIT_PART(SPLIT_PART(sighting_report, '(Entered', 1), 'Occurred : ', 2), 'Reported', 1) AS occurred,
SPLIT_PART(SPLIT_PART(SPLIT_PART(SPLIT_PART(sighting_report, 'Post', 1), 'Reported: ', 2), ' AM', 1), ' PM', 1) AS reported,
SPLIT_PART(SPLIT_PART(sighting_report, 'Location', 1), 'Posted: ', 2) AS posted
FROM ufo
) AS A
ORDER BY 1;
SELECT
location,
REPLACE(REPLACE(location, 'close to', 'near'), 'outside of', 'near') AS location_clean
FROM (
SELECT SPLIT_PART(SPLIT_PART(sighting_report, 'Shape', 1), 'Location: ', 2) AS location
FROM ufo
) AS A
ORDER BY 1;
SET datestyle = 'mdy';
SELECT
(CASE
WHEN occurred = '' THEN NULL
WHEN LENGTH(occurred) < 8 THEN NULL
ELSE occurred::TIMESTAMP
END) AS occurred,
entered_as,
(CASE
WHEN LENGTH(reported) < 8 THEN NULL
ELSE reported::TIMESTAMP
END) AS reported,
(CASE
WHEN posted = '' THEN NULL
ELSE posted::DATE
END) AS posted,
REPLACE(REPLACE(location, 'close to', 'near'), 'outside of', 'near') AS location,
INITCAP(shape) AS shape,
TRIM(duration) AS duration
FROM (
SELECT
SPLIT_PART(SPLIT_PART(SPLIT_PART(sighting_report, '(Entered', 1), 'Occurred : ', 2), 'Reported', 1) AS occurred,
SPLIT_PART(SPLIT_PART(sighting_report, ')', 1), 'Entered as : ', 2) AS entered_as,
SPLIT_PART(SPLIT_PART(SPLIT_PART(SPLIT_PART(sighting_report, 'Post', 1), 'Reported: ', 2), ' AM', 1), ' PM', 1) AS reported,
SPLIT_PART(SPLIT_PART(sighting_report, 'Location', 1), 'Posted: ', 2) AS posted,
SPLIT_PART(SPLIT_PART(sighting_report, 'Shape', 1), 'Location: ', 2) AS location,
SPLIT_PART(SPLIT_PART(sighting_report, 'Duration', 1), 'Shape: ', 2) AS shape,
SPLIT_PART(sighting_report, 'Duration:', 2) AS duration
FROM ufo
) AS A
ORDER BY 1;