본문 바로가기

프로그래머스

(MySQL / 프로그래머스) 그룹별 조건에 맞는 식당 목록 출력하기

728x90
반응형
SMALL


그룹별 조건에 맞는 식당 목록 출력하기


 



문제 출처

 

코딩테스트 연습 - 그룹별 조건에 맞는 식당 목록 출력하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


Code

SELECT A.MEMBER_NAME, B.REVIEW_TEXT, DATE_FORMAT(B.REVIEW_DATE, "%Y-%m-%d") AS REVIEW_DATE
FROM MEMBER_PROFILE A
JOIN REST_REVIEW B ON A.MEMBER_ID = B.MEMBER_ID
WHERE A.MEMBER_NAME = (
  SELECT MEMBER_NAME
  FROM (
    SELECT A.MEMBER_NAME, SUM(B.REVIEW_SCORE) AS SUM_REVIEW_SCORE
    FROM MEMBER_PROFILE A
    JOIN REST_REVIEW B ON A.MEMBER_ID = B.MEMBER_ID
    GROUP BY A.MEMBER_NAME
    ORDER BY SUM_REVIEW_SCORE DESC
    LIMIT 1
  ) AS temp
)
ORDER BY REVIEW_DATE, REVIEW_TEXT

#MEMBER_PROFILE와 REST_REVIEW 테이블에서 
#---> FROM문에서 JOIN할 2 테이블을 보여주고 있다

#리뷰를 가장 많이 작성한 회원의 
#---> 조건문을 보여주고있다

#리뷰들을 조회하는 SQL문을 작성
#---> 위에 조건문을 만족하는 사람의 리뷰만 보여주라고 말해주고 있다(조건의 조건)

#회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력되도록 작성해주시고, 
#---> SELECT문을 보여주고있다

#결과는 리뷰 작성일을 기준으로 오름차순, 리뷰 작성일이 같다면 리뷰 텍스트를 기준으로 오름차순 정렬해주세요.
#---> 정렬방법에대해 보여주고 있다


Code설명 & TIPS


풀이 방법!

 

MEMBER_PROFILE와 REST_REVIEW 테이블에서 

---> FROM문에서 JOIN할 2 테이블을 보여주고 있다

 

리뷰를 가장 많이 작성한 회원의 

---> 조건문을 보여주고있다

 

리뷰들을 조회하는 SQL문을 작성

---> 위에 조건문을 만족하는 사람의 리뷰만 보여주라고 말해주고 있다(조건의 조건)

 

회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력되도록 작성해주시고, 

---> SELECT문을 보여주고있다

 

결과는 리뷰 작성일을 기준으로 오름차순, 리뷰 작성일이 같다면 리뷰 텍스트를 기준으로 오름차순 정렬해주세요.

---> 정렬방법에대해 보여주고 있다

 

설명!

사실상 까다로운건 없던 문제였다

 

문제 구조를 먼저 파악을 한다면 손쉽게 풀 수 있다

 

일단 각각 사람마다 썻던 리뷰총합을 구하고 그걸로 순위를 매긴 뒤 1등의 이름을 찾는다

 

그 이름을 통해 그사람이 썻던 리뷰들을 모두 보여주면 된다.

 

순위를 매기는 과정에서 내 방식대로 정렬 후 리미트로 자르는 방식도 값을 구할 수 있긴하지만

 

RANK함수를 사용하면 더 짧고 가시성 있게 만들 수 있다.

 

필자도 RANK를 이용해 만들걸 이라는 생각을 했지만 너무 먼길을 걸어왔었기에...

 

RANK를 이용하여 한번 만들어 보길 추천한다(난 안할거임)

 

 

 

 

티스토리와 깃허브 홈
 

학스의 개발일지

안녕하세요 일상과 코딩공부를 올리고 있는 JAVA개발자 학스입니다. 저는 주로 JAVA, jQuery, PostgreSQL, HIVE을 다루고 있고 코딩테스트공부도 병행중입니다. 제 깃허브 주소인 https://github.com/hacs2772에

hacs2772.tistory.com

 

 

hacs2772 - Overview

개발왕 학스. hacs2772 has 8 repositories available. Follow their code on GitHub.

github.com

 

오류나 궁금하신점은
아래 댓글로 알려주시면 감사하겠습니다.

 

 

 

 

728x90
반응형
LIST