[SQL 문제 풀이] 조건에 맞는 식당 목록 출력하기

프로그래머스 (131124)
Stupefyee's avatar
Mar 11, 2025
[SQL 문제 풀이] 조건에 맞는 식당 목록 출력하기
notion image
notion image
 

내가 작성한 쿼리

Oracle

-- 댓글을 가장 많이 작성한 유저의 id를 조회하는 CTE WITH MVP AS ( SELECT MEMBER_ID FROM ( SELECT MP.MEMBER_ID FROM REST_REVIEW RR JOIN MEMBER_PROFILE MP ON RR.MEMBER_ID = MP.MEMBER_ID GROUP BY MP.MEMBER_ID ORDER BY COUNT(RR.MEMBER_ID) DESC ) WHERE ROWNUM = 1 ) SELECT MP.MEMBER_NAME, RR.REVIEW_TEXT, TO_CHAR(RR.REVIEW_DATE, 'YYYY-MM-DD') AS REVIEW_DATE FROM REST_REVIEW RR JOIN MEMBER_PROFILE MP ON RR.MEMBER_ID = MP.MEMBER_ID WHERE RR.MEMBER_ID = (SELECT MEMBER_ID FROM MVP) ORDER BY REVIEW_DATE, REVIEW_TEXT;

MySQL

-- 댓글을 가장 많이 작성한 유저의 id를 조회하는 CTE WITH MVP AS ( SELECT MP.MEMBER_ID FROM REST_REVIEW RR JOIN MEMBER_PROFILE MP ON RR.MEMBER_ID = MP.MEMBER_ID GROUP BY MP.MEMBER_ID ORDER BY COUNT(RR.MEMBER_ID) DESC LIMIT 1 ) SELECT MP.MEMBER_NAME, RR.REVIEW_TEXT, DATE_FORMAT(RR.REVIEW_DATE, '%Y-%m-%d') REVIEW_DATE FROM REST_REVIEW RR JOIN MEMBER_PROFILE MP ON RR.MEMBER_ID = MP.MEMBER_ID WHERE RR.MEMBER_ID = (SELECT MEMBER_ID FROM MVP) ORDER BY REVIEW_DATE, REVIEW_TEXT;

차이점

  • 상위 N개 결과를 가져오는 방식, 순서의 차이
    • Oracle
      • ROWNUM <= N 을 사용하여 가져옴
      • WHERE절에서 사용됨 → 정렬보다 먼저 실행됨 → 서브쿼리 활용
    • MySQL
      • LIMIT N 을 사용하여 가져옴
      • 정렬 이후에 실행됨
  • 날짜의 형식을 변환하는 함수의 차이
    • Oracle
      • TO_CHAR(인수, ‘형식’)
    • MySQL
      • DATE_FORMAT(인수, '형식')
    • 각 날짜 포맷도 다르니 주의
 
Share article

stupefyee