JOIN
문제풀이
1. REST_REVIEW 테이블에서 ID별 개수 뽑기
SELECT MEMBER_ID, COUNT(MEMBER_ID) AS CMI FROM REST_REVIEW
GROUP BY MEMBER_ID
2. REST_REVIEW 테이블과 ID별 개수뽑은 테이블 결합
SELECT C.MEMBER_NAME, A.REVIEW_TEXT, A.REVIEW_DATE, A.MEMBER_ID, B.CMI FROM REST_REVIEW AS A
LEFT JOIN
(SELECT MEMBER_ID, COUNT(MEMBER_ID) AS CMI FROM REST_REVIEW GROUP BY MEMBER_ID )
AS B ON A.MEMBER_ID = B.MEMBER_ID
※ SELECT에서 선택한 컬럼명은 제가 보고싶은 컬럼명들만 선별했음, 본인에 따라 바꾸기
3. MEMBER_PROFILE 테이블과 추가 결합
SELECT C.MEMBER_NAME, A.REVIEW_TEXT, A.REVIEW_DATE, A.MEMBER_ID, B.CMI FROM REST_REVIEW AS A
LEFT JOIN
(SELECT MEMBER_ID, COUNT(MEMBER_ID) AS CMI FROM REST_REVIEW GROUP BY MEMBER_ID )
AS B ON A.MEMBER_ID = B.MEMBER_ID
RIGHT JOIN MEMBER_PROFILE AS C ON A.MEMBER_ID = C.MEMBER_ID
※ LEFT로 조인 시 MEMBER_PROFILE 에 이름이 없는 칸이 존재, RIGHT 로 공백 없앰
4. WITH 함수를 사용하여 중간결과 확인
WITH RSS AS
(SELECT C.MEMBER_NAME, A.REVIEW_TEXT, A.REVIEW_DATE, A.MEMBER_ID, B.CMI
FROM REST_REVIEW AS A
LEFT JOIN
(SELECT MEMBER_ID, COUNT(MEMBER_ID) AS CMI FROM REST_REVIEW GROUP BY MEMBER_ID )
AS B ON A.MEMBER_ID = B.MEMBER_ID
RIGHT JOIN MEMBER_PROFILE AS C ON A.MEMBER_ID = C.MEMBER_ID )
SELECT * FROM RSS
5. 조건에 맞게 출력( 테이블에서 리뷰를 가장 많이 작성한 회원의 리뷰들 ), WHERE로 MAX 값 설정
WITH RSS AS
(SELECT C.MEMBER_NAME, A.REVIEW_TEXT, A.REVIEW_DATE, A.MEMBER_ID, B.CMI
FROM REST_REVIEW AS A
LEFT JOIN
(SELECT MEMBER_ID, COUNT(MEMBER_ID) AS CMI FROM REST_REVIEW GROUP BY MEMBER_ID )
AS B ON A.MEMBER_ID = B.MEMBER_ID
RIGHT JOIN MEMBER_PROFILE AS C ON A.MEMBER_ID = C.MEMBER_ID )
SELECT MEMBER_NAME, REVIEW_TEXT,
DATE_FORMAT(REVIEW_DATE, '%Y-%m-%d') AS REVIEW_DATE FROM RSS
WHERE CMI = (SELECT MAX(CMI) FROM RSS)
ORDER BY REVIEW_DATE, REVIEW_TEXT
WITH 테이블 중간중간에 들어간 컬럼 및 AS(별칭)은 제가 보기에 편한걸로 임의작성한거('RSS, CMI 등) 그래서 작성에 영향은 없음
요즘 WITH로 테이블을 하나 새로 구축 후 SELECT으로 결과 뽑는 것이 문제풀기에 더 수월한 것 같다 가독성도 무너가 높아지는 것 같고..
'필기ㆍ코테 공부 > SQL' 카테고리의 다른 글
[프로그래머스/MYSQL] 조건에 맞는 사용자 정보 조회하기 (0) | 2025.01.05 |
---|---|
[프로그래머스/MYSQL] 카테고리 별 상품 개수 구하기 (1) | 2025.01.05 |
[프로그래머스/MYSQL] 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기 (0) | 2025.01.02 |
[프로그래머스/MYSQL] 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기 (0) | 2025.01.02 |
[프로그래머스/MYSQL] 잡은 물고기의 평균 길이 구하기 (1) | 2024.12.29 |