CodeGym /행동 /SQL SELF /데이터 포매팅

데이터 포매팅

SQL SELF
레벨 5 , 레슨 0
사용 가능

일단 너무 뻔하지만 진짜 중요한 얘기부터 시작할게: 데이터는 원래 "날것"이야. 그냥 막 들어온 숫자, 날짜, 문자열은 보기 진짜 힘들지. 예를 들어서 리포트에 날짜가 어떤 건 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 포맷, 문자열은 대소문자 구분, 숫자는 반올림 등등.

분석 및 시각화

그래프나 차트 만들 때 포매팅이 없으면 진짜 보기 안 좋을 수 있어.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION