[2025.10.23] 오늘의 학습 키워드 - Pivot Table

허진원·2025년 10월 23일

내일배움캠프 TIL

목록 보기
4/41
  1. 오늘 학습 키워드
    Pivot Table 작성해보기
  2. 오늘 학습 한 내용을 나만의 언어로 정리하기
    4일 차가 되었다. 이전 강의들을 복습하면서 오늘은 새로운 SQL query 작성 방법을 공부했다. 이전 강의들의 개념은 이제 어느 정도 이해가 되었다. 당면한 문제라고 한다면 "빨리 익숙해져서 자유롭게 query 문을 작성할 수 있도록" 만들어야 한다는 점일 것이다.
  3. 학습하며 겪었던 문제점 & 에러
    Pivot Table 의 길이가 상당히 길기 때문에 그 자체로 부담이 많이 되었다. 한 문장 한 문장 찬찬히 뜯어보면 그리 어렵다고 생각되진 않았지만, 문장들이 한 화면에 출력될 수 있게끔 묶어 준다는 것은 초보인 나에게는 쉽지 않았다.
  • 문제&에러에 대한 정의
    아마도지만, 당장 눈에 보이는 query 문장의 길이가 길기 때문에 거기에 압도된 것이 아닌가 싶다. 앞서 말했듯, 각각의 내용 자체는 무난하게 수행할 수 있는 내용이었다. 그러나 물리적인 길이에만 집중한 나머지 전의를 상실하고 만 것이다.
  • 내가 한 시도
    일단 강의 자료에 있는 query 를 따라서 작성했다. 물론 복사 붙여넣기를 하는 것이 아니라, 내 손으로 직접 한 단어 한 단어 적어 넣었다. 시간은 오래 걸렸지만, 지금 오래 걸리는 만큼 나중에 큰 도움이 될 것이라고 생각했다.
 select restaurant_name,
       max(if(hh='15', cnt_order, 0)) "15",
       max(if(hh='16', cnt_order, 0)) "16",
       max(if(hh='17', cnt_order, 0)) "17",
       max(if(hh='18', cnt_order, 0)) "18",
       max(if(hh='19', cnt_order, 0)) "19",
       max(if(hh='20', cnt_order, 0)) "20"
from 
(
select a.restaurant_name,
       substring(b.time, 1, 2) hh,
       count(1) cnt_order
from food_orders a inner join payments b on a.order_id=b.order_id
where substring(b.time, 1, 2) between 15 and 20
group by 1, 2
) a
group by 1
order by 7 desc

위 query 가 오늘 새로 학습한 Pivot Table 중 하나이다.
가장 안 쪽의 subquery 문을 작성하는 것 까지는 어렵지 않게 진행했다. 그 후 쓰여진 Pivot view 부터는 강의 영상을 멈추고 천천히 작성할 수밖에 없었다.

작성을 완료하고 나서는 자잘한 내용을 바꾸면서 출력값이 어떻게 바뀌는 지 확인했다. 가령 위 query 에서 subquery 문 안 쪽의 group by 에서 2를 제외하면 데이터량이 방대할 경우 출력하고자 하는 데이터와는 다른 것이 나올 위험이 있다는 것을 재확인할 수 있었다.

  • 해결 방법
    반복 작업이 답이라는 것을 안다. 계속해서 만지고 뜯어보다 보면 어느 샌가 자연스럽게 내용을 수정하고 있는 내가 있을 것이라고 생각한다. 아직은 그런 단계까지 도달하려면 한참 남았다는 게 문제일 뿐. 정신 붙잡고 버티자!
  • 새롭게 알게 된 점
    날짜 데이터의 포멧을 새롭게 바꾸는 방법도 알게 되었다. 우리가 흔히 접하는 보고서나 표의 양식에서 쉽게 발견할 수 있는 날짜 형식으로 출력하는 방법이었다.
    select date(date) date_type,
          date
    from payments

위의 query 문에서 date(date) 컬럼과 date 컬럼은 같은 형태로 출력되었지만, 컬럼의 형식이 원래 문자 개념으로 출력되던 것이 시간 개념으로 바뀌어서 출력된 것을 알 수 있었다.

  • 이 문제&에러를 다시 만나게 되었다면?
    새롭게 익힌 개념과 기술이 많이 생겼나보다. 오늘과 같은 문제가 생긴다면, 단순히 자신을 질책하기보다는 새롭게 배운 내용들과 그 전에 배웠던 내용들을 연결시키면서 다시 공부해볼 것이다.
  1. 내일 학습 할 것은 무엇인지
    내일은 직무 스터디 발표회가 있는 날이다. 시작하자마자 첫 주에 내가 팀을 대표해서 발표하게 되었다. 굉장히 떨리고, 말을 잘못할까 두렵기도 한 밤이다. 하지만 이 발표 경험이 시간이 지나고 면접이나 취직 후 프로젝트 발표 같은 일을 할 때에 도움이 될 것이라 믿는다.
profile
국문과 전공 데이터 입문자

0개의 댓글