DB 스터디 5주차 & 간단 회고

권재현·2021년 6월 27일
0

DB스터디

목록 보기
4/4
post-thumbnail

4 주차 문제는 너무 간단히 풀이가 되서 글 작성을 스킵했다.
사실 5주차도 동일하지만, 쓰고 싶은 1문제 가 있다.

[5주차 문제3]
창고중에서 'Samsung'제품이 가장 많은 창고를 구하고 그 창고는 어느 나라에 있는 창고 인지 구하시오.
출력 : WAREHOUSE_ID(창고번호), WAREHOUSE_NAME, COUNTRY, QSUM(제품수량합계)

이문제 풀이 보다는 쿼리에 대해서 말하고 싶어 작성한다.

초기버전

-- 출력 : WAREHOUSE_ID(창고번호), WAREHOUSE_NAME, COUNTRY, QSUM(제품수량합계)
SELECT W.WAREHOUSE_ID,W.WAREHOUSE_NAME,C.COUNTRY_ID,Q.QSUM
FROM  WAREHOUSES W INNER JOIN(SELECT I.WAREHOUSE_ID,SUM(I.QUANTITY) AS QSUM,
                                       RANK() OVER (ORDER BY SUM(I.QUANTITY) DESC) AS RNK
                              FROM PRODUCTS P INNER JOIN INVENTORIES I
                                                        ON P.PRODUCT_ID = I.PRODUCT_ID
                                                       AND P.PRODUCT_NAME LIKE 'Sam%'
                              GROUP BY I.WAREHOUSE_ID) Q
                           ON W.WAREHOUSE_ID = Q.WAREHOUSE_ID
                          AND Q.RNK = 1
                    INNER JOIN  LOCATIONS L
                           ON W.LOCATION_ID = L.LOCATION_ID
                    INNER JOIN COUNTRIES C
                            ON L.COUNTRY_ID = C.COUNTRY_ID
;

수정버전

-- 출력 : WAREHOUSE_ID(창고번호), WAREHOUSE_NAME, COUNTRY, QSUM(제품수량합계)
SELECT W.WAREHOUSE_ID,W.WAREHOUSE_NAME,C.COUNTRY_ID,Q.QSUM
FROM  WAREHOUSES W INNER JOIN  LOCATIONS L
                           ON W.LOCATION_ID = L.LOCATION_ID
                   INNER JOIN COUNTRIES C
                           ON L.COUNTRY_ID = C.COUNTRY_ID
                   INNER JOIN(SELECT I.WAREHOUSE_ID,SUM(I.QUANTITY) AS QSUM,
                                       RANK() OVER (ORDER BY SUM(I.QUANTITY) DESC) AS RNK
                              FROM PRODUCTS P INNER JOIN INVENTORIES I
                                                        ON P.PRODUCT_ID = I.PRODUCT_ID
                                                       AND P.PRODUCT_NAME LIKE 'Sam%'
                              GROUP BY I.WAREHOUSE_ID) Q
                           ON W.WAREHOUSE_ID = Q.WAREHOUSE_ID
                          AND Q.RNK = 1
;

문제를 다 풀이하고 나서, 카페에 올리기 직전에 쿼리를 한번 더 보는 데, 갑자기 좋은 생각이 스쳐 지나갔다. 바로 서브쿼리를 마지막으로 조인하면 보는 스터디 팀원들이 내 쿼리를 보는 데 있어, 편할 걸 같다는 생각이 나서 바로 실행에 올렸다.
그리고 나서 쿼리를 보는 데 확실히 더욱 깔끔해서 보기 좋았다.
내가 그동안 수많은 쿼리를 짜면서, 처음한 생각이였다.
별거아니지만, 중요한 한 발자국을 나아갔다고 생각한다.
항상 문제를 푸는 데 집중했지, 내 쿼리를 보는 사람에 대한 배려가 부족했던 것 같다. 마지막 주차에 중요한 교훈을 얻어가는 듯해 뿌듯하다.

스터디 간단 회고

5월25일 샘이 복습겸 정말 간단한 DB문제를 내셨는데, 정말 푸는 데 오래걸렸고, 하나도 생각이 나지않았다. 그때 내 자신에게 꽤 큰 실망을 해, 복습 겸 스터디를 진행해야겠다고 다짐했다.
그래서 26일날 바로 스터디할 새로운 테이블을 서칭했고, 그 결과 오라클 샘플 데이터를 찾았고, 활용할 수 있게 이 수정해주셔서 바로 시작했다. 팀원들을 나를 비롯해 총 7명이였다.
내가 잘 이끌어 갈 수 있을까? 걱정도 했지만 5주가 지난 지금 꽤 만족스럽다. 그 이유는 좋은 문제를 내기위해 고민한 흔적과 한번도 활용 못했던 함수를 활용하면서 푼 문제를 푼 팀원들에게 고맙다. 특히 4주차에 DB에 대해 어려워했던, 건정이 나름대로 많은 고민을 한 흔적이 보인 문제는 내가 가장 기억에 남는 문제였고, 스터디장으로서 가장 뿌듯한 순간이였다 !!
7월부터는 프로젝트에 들어가기 때문에 아쉽게도 스터디와 병행이 힘들어보여 스탑하기로했다.
비록 한달간의 여정이였지만, 충분히 의미있었고,DB에 대한 감각을 유지하고, 재미를 발견한 기간이였다.
7월 한달 동안 프로젝트에 한번 미쳐보자 !!!!

팀원 :정희두,이인복,최정민,유시연,김도헌,주건정
아무도 이글은 못보겠지만, 모두 수고 많았습니다 ㅋㅋ

profile
호텔리어 출신 비전공자

0개의 댓글