일단 너무 뻔하지만 진짜 중요한 얘기부터 시작할게: 데이터는 원래 "날것"이야. 그냥 막 들어온 숫자, 날짜, 문자열은 보기 진짜 힘들지. 예를 들어서 리포트에 날짜가 어떤 건 01/02/2023로, 어떤 건 2023-02-01로 써 있으면, 아무리 꼼꼼한 데이터 분석가라도 헷갈릴 수밖에 없어. 이럴 때 데이터 포매팅의 마법이 필요하지!
데이터 포매팅을 하면 이런 게 좋아:
- 데이터를 보기 편한 형태로 바꿔서 다루기 쉽게 만들어.
- 데이터 분석할 때 꿀팁 장인처럼 필요한 정보만 쏙쏙 뽑아낼 수 있어.
- 익스포트하거나 다른 시스템이랑 연동할 때 데이터를 준비할 수 있어.
- 리포트나 시각화 자료를 읽기 쉽고 정확하게 만들 수 있지.
예를 들어, 네가 대학교에서 일한다고 치고 학생들 전체 이름, 생년월일, 학과를 쭉 뽑아서 리포트를 만들어야 해. 데이터를 일일이 붙여서 만들 필요 없이, 포매팅 쿼리 하나로 이름이랑 성을 한 컬럼에 합치고, 생일도 2001년 3월 12일처럼 보기 좋게 뽑을 수 있지.
데이터 포매팅의 주요 미션
포매팅은 과일 샐러드 만드는 거랑 비슷해. 그냥 과일을 한데 던져 넣는 게 아니라, 예쁘게 썰고 접시에 잘 담아야 하잖아. SQL에서는 이 작업이 몇 가지로 나뉘어:
문자열 포매팅
이건 문자열 합치기, 대소문자 바꾸기(전부 대문자나 소문자로), 공백이나 문자 추가/삭제 같은 걸 포함해.
숫자 포매팅
가끔 숫자를 문자열로 바꾸거나, 소수점 자리수 맞춰서 반올림하는 게 필요할 때가 있어.
날짜와 시간 다루기
여기선 현재 날짜 뽑기, 날짜/시간 포매팅, 날짜에서 연도나 월 같은 특정 부분만 뽑기 같은 걸 자동화할 수 있어.
유니크 값 뽑기
리포트에 유니크한 값만 보여줘야 할 때(예: 유니크한 도시나 학과), 이것도 데이터 포매팅에 들어가.
PostgreSQL에서 포매팅 도구들
PostgreSQL에는 데이터 다루는 데 쓸 수 있는 내장 함수가 엄청 많아. 여기서 다루게 될 것들 중 일부만 살짝 보여줄게:
문자열 포매팅
CONCAT(): 문자열 합치기.UPPER(),LOWER(): 텍스트 대소문자 바꾸기.
날짜와 시간 포매팅
NOW(): 현재 날짜와 시간.CURRENT_DATE: 현재 날짜(시간 제외).DATE_PART(): 날짜에서 연도, 월 등 특정 부분만 뽑기.
타입 변환
CAST(): 데이터 타입 바꾸기.- 문법:
<값>::<타입>.
데이터 정렬
ORDER BY: 한 개 또는 여러 컬럼 기준으로 데이터 정렬.DISTINCT: 유니크 값만 뽑기.
데이터 포매팅 예시: 실제로 어떻게 보일까?
재밌게 해보려고 예시 몇 개 보여줄게. 일단 쉬운 것부터!
예시 1: 문자열 포매팅
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM students;
이 쿼리는 first_name이랑 last_name을 합쳐서 full_name 컬럼으로 만들어. 예를 들어 학생 이름이 "Otto", 성이 "Art"면 결과는 "Otto Art"가 돼.
예시 2: 날짜 포매팅
SELECT DATE_PART('year', date_of_birth) AS birth_year
FROM students;
여기선 date_of_birth 컬럼에서 연도만 뽑아. 만약 생일이 2001-03-15라면 결과는 2001이야.
예시 3: 타입 변환
SELECT birth_year::text || ' 년' AS formatted_year
FROM (
SELECT DATE_PART('year', date_of_birth) AS birth_year
FROM students
) subquery;
이 쿼리는 먼저 연도를 뽑고, 그걸 문자열로 바꾼 다음 " 년"을 붙여. 예를 들어 결과는 2001 년이 돼.
이게 어디에 쓰일까?
매니저용 리포트
다들 "날것" 데이터를 보고 싶어하지 않아. 예를 들어 회사 매출 리포트엔 1,000,000처럼 천 단위로 끊어서 보여주고(1000000 대신), 날짜도 21 FEB 2025처럼 포매팅하는 게 좋아.
고객용 리포트
예를 들어, 고객한테 "친애하는 [이름 성]님, 주문 N123이 2023년 10월 12일에 성공적으로 배송되었습니다." 이런 식으로 메일을 보낼 수 있지.
다른 시스템과 연동
어떤 입력 폼은 특정 포맷의 데이터를 요구해: 날짜는 ISO 포맷, 문자열은 대소문자 구분, 숫자는 반올림 등등.
분석 및 시각화
그래프나 차트 만들 때 포매팅이 없으면 진짜 보기 안 좋을 수 있어.
GO TO FULL VERSION