tak's data blog
PostgreSQL 문제풀이 8 본문
문제
dvd렌탈 시스템의 관리자는 매달 매출 순위 1위를 한 고객에게 특별한 선물을 주고자 한다.
이러한 업무를 달성하기 위해 customer_rank_yyyymm이라는 테이블을 ctas기법으로 생성하는 sql문을 작성하라.
(단 선물 제공 기준을 정하기 위해 sum_amount도 저장하여라.)
1. payment 테이블을 customer_id, yyyymm 기준으로 group by 후 amount의 합계를 구합니다.
sum을 사용해서 새로운 sum_amount로 지정해주고 to_char를 이용해서 날짜 데이터를 년월로 끊어줍니다.
2. 1번 결과를 인라인 뷰로 감싼 후 yyyymm을 기준으로 amount 합계 별 순위를 구합니다.
from절에서 인라인 뷰로 1번을 감싼 후 테이블을 a로 지정합니다. 그리고 매출 순위를 알기 위해서 row_number() 함수를 사용합니다. (*mysql에서는 row_number()를 사용할 수 없는것으로 알고 있으므로 따로 구현해야합니다...)
3. 마지막으로 CTAS문을 사용하여 테이블 생성 및 데이터를 입력한다.
위의 오류는 생성했는데 다시 실행해서 나온 오류입니다. 실행해보시면 잘 실행되는 것을 알 수 있습니다.
유의해야할 점 : ctas 기법을 사용하기 위해서 그 차례대로 하나의 과정을 순서대로 진행할 것 너무 한번에 해결하려고 하면 되려던 것도 안되는 것 같다. 인라인 뷰의 중요성과 row_number를 이용할 때 안의 partion by 와 order by를 어떤 것으로 진행할것인지??
'SQL' 카테고리의 다른 글
[SQL] HackerRank - The Report (1) | 2022.02.11 |
---|---|
Python SQL 연동 (0) | 2021.04.12 |
PostgreSQL 엑셀 데이터 연동 (0) | 2021.02.16 |
PostgreSQL 문제풀이 7 (0) | 2021.02.08 |
PostgreSQL 문제풀이 6 (0) | 2021.01.26 |