SQL

[프로그래머스 SQL KIT] JOIN #6 - 그룹별 조건에 맞는 식당 목록 출력

enayoiii 2025. 1. 28. 18:07

프로그래머스 문제 보러가기

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

문제 설명

  • 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회
  • 회원 테이블과 리뷰 테이블 존재

코드

SELECT MEMBER_NAME, REVIEW_TEXT, DATE_FORMAT(REVIEW_DATE, '%Y-%m-%d') AS REVIEW_DATE
FROM MEMBER_PROFILE M
JOIN REST_REVIEW R ON M.MEMBER_ID = R.MEMBER_ID
WHERE M.MEMBER_ID = (SELECT MEMBER_ID FROM REST_REVIEW GROUP BY MEMBER_ID HAVING (COUNT(MEMBER_ID) = MAX(COUNT(MEMBER_ID))))
ORDER BY REVIEW_DATE, REVIEW_TEXT;

코드 설명

  1. LINE 1) 출력 형식에 맞게 원하는 정보 출력
  2. LINE 2~3)  회원 테이블과 리뷰 테이블 JOIN : JOIN KEY는 회원 아이디
  3. LINE 4) 서브쿼리를 이용해 가장 리뷰를 많이 작성한 회원 선택
    1. GROUP BY로 리뷰 테이블에서 회원 아이디로 그룹을 묶고
    2. HAVING절로 조건 설정 : 회원 아이디별로 리뷰 테이블에 존재하는 회원 아이디의 수 (즉, 작성한 리뷰의 수)를 셌을 때 가장 많은 수를 가진 회원의 아이디 선택  - HAVING (COUNT(MEMBER_ID) = MAX(COUNT(MEMBER_ID))
  4. 문제의 조건에 맞게 리뷰 날짜를 기준으로 오름차순 정렬, 리뷰 날짜가 같다면 리뷰 텍스트를 기준으로 오름차순 정렬
let textNodes = document.querySelectorAll("div.tt_article_useless_p_margin.contents_style > *:not(figure):not(pre)"); textNodes.forEach(function(a) { a.innerHTML = a.innerHTML.replace(/`(.*?)`/g, '$1'); });