Coding Test/SQL
[Programmers Lv.4] 그룹별 조건에 맞는 식당 목록 출력하기 - 131124
ro_rdil_31
2024. 10. 17. 12:44
728x90
게시물 가장 많은 아이디 추출을 위해 JOIN (SELECT~)를 해주고 자기 자신과 SELF JOIN 해줬다.
Question
MEMBER_PROFILE와 REST_REVIEW 테이블에서 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 SQL문을 작성해주세요. 회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력되도록 작성해주시고, 결과는 리뷰 작성일을 기준으로 오름차순, 리뷰 작성일이 같다면 리뷰 텍스트를 기준으로 오름차순 정렬해주세요.
Code (After 25.04., 25.06.)
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 1
ORDER BY COUNT(REVIEW_ID) DESC
LIMIT 1)
ORDER BY 3, 2
Code (After)
WITH MOST_MEMBER AS(
SELECT MEMBER_ID, COUNT(*) # SELECT MEMBER_ID
FROM REST_REVIEW
GROUP BY MEMBER_ID
ORDER BY 2 DESC # ORDER BY COUNT(*) DESC
LIMIT 1
)
SELECT MEMBER_NAME, REVIEW_TEXT, DATE_FORMAT(REVIEW_DATE, '%Y-%m-%d') AS REVIEW_DATE
FROM REST_REVIEW R
JOIN MOST_MEMBER M
ON R.MEMBER_ID = M.MEMBER_ID
JOIN MEMBER_PROFILE P
ON P.MEMBER_ID = M.MEMBER_ID
ORDER BY 3, 2
Code (Before)
SELECT M.MEMBER_NAME, REVIEW_TEXT, DATE_FORMAT(REVIEW_DATE,'%Y-%m-%d')
FROM REST_REVIEW A
JOIN (SELECT MEMBER_ID
FROM REST_REVIEW
GROUP BY MEMBER_ID
ORDER BY COUNT(*) DESC
LIMIT 1) B
ON A.MEMBER_ID = B.MEMBER_ID
JOIN MEMBER_PROFILE M
ON M.MEMBER_ID = A.MEMBER_ID
ORDER BY REVIEW_DATE, REVIEW_TEXT

now me
On my github
728x90