SQL에서 데이터 피벗팅: 직업별 이름 순환 배치 기법

🤖 AI 추천

이 콘텐츠는 SQL을 사용하여 데이터를 효과적으로 재구성하는 방법을 배우고자 하는 데이터 분석가, 백엔드 개발자 및 데이터 엔지니어에게 매우 유용합니다. 특히, 데이터베이스에서 행 데이터를 열 데이터로 변환하는 피벗팅(Pivoting) 기술을 이해하고 실제 적용하려는 미들 레벨 이상의 개발자에게 권장됩니다.

🔖 주요 키워드

💻 Development

핵심 기술

SQL의 강력한 기능을 활용하여 복잡한 데이터 구조를 원하는 형태로 변환하는 피벗팅(Pivoting) 기법을 소개합니다. 특히 ROW_NUMBER() 함수와 CASE 문을 조합하여 행 데이터를 열 데이터로 효과적으로 재배열하는 방법을 상세히 설명합니다.

기술적 세부사항

  • 데이터 피벗팅의 필요성: 행으로 나열된 데이터를 직업별로 열을 분리하여 가독성과 분석 용이성을 높입니다.
  • ROW_NUMBER() 함수 활용: 각 직업군 내에서 이름을 알파벳순으로 정렬하고 고유한 순번(rn)을 부여합니다. 이는 동일한 행 위치에 다른 직업군의 이름을 매칭하기 위한 핵심 단계입니다.
    sql SELECT name, occupation, ROW_NUMBER() OVER (PARTITION BY occupation ORDER BY name) AS rn FROM OCCUPATIONS
  • CASE 문을 이용한 열 변환: 각 직업(Doctor, Professor, Singer, Actor)에 해당하는 이름을 조건부로 선택하여 새로운 열을 생성합니다.
    sql MAX(CASE WHEN occupation = 'Doctor' THEN name ELSE NULL END) AS Doctor, MAX(CASE WHEN occupation = 'Professor' THEN name ELSE NULL END) AS Professor, MAX(CASE WHEN occupation = 'Singer' THEN name ELSE NULL END) AS Singer, MAX(CASE WHEN occupation = 'Actor' THEN name ELSE NULL END) AS Actor
  • GROUP BY rnORDER BY rn: 서브쿼리에서 생성된 rn 값을 기준으로 그룹화하고 정렬하여, 각 직업별 동일 순번의 이름들이 같은 행에 표시되도록 합니다. MAX 함수는 각 rn 그룹에서 해당 직업의 이름을 추출하는 역할을 합니다.
  • NULL 처리: 특정 직업에 해당 순번의 이름이 없을 경우 NULL 값을 표시하여 데이터의 완전성을 유지합니다.

개발 임팩트

  • 데이터 시각화 도구나 리포트 생성 시 필요한 형태로 데이터를 사전에 가공할 수 있습니다.
  • 복잡한 데이터 조작 없이 단일 SQL 쿼리로 원하는 형태의 결과를 얻어 효율성을 높입니다.
  • 데이터 분석 및 비즈니스 인텔리전스(BI)를 위한 기초 데이터 준비 과정을 간소화합니다.

커뮤니티 반응

(언급 없음)

📚 관련 자료