기록하고 까먹지 말기

(SQL) 그룹별 조건에 맞는 식당 목록 출력하기 본문

전공/프로그래머스

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

yha97 2023. 5. 29. 14:27

날짜 : 2023. 05. 29

사용 언어 : mysql

 

문제

https://school.programmers.co.kr/learn/courses/30/lessons/131124

 

코드

# 리뷰를 가장 많이 작성한 회원의 리뷰
# 회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력
select p.member_name, r.review_text, date_format(r.review_date, "%Y-%m-%d") as review_date
from MEMBER_PROFILE p
join REST_REVIEW r on p.member_id = r.member_id
where p.member_id = (select member_id from rest_review
                    group by member_id
                    order by count(*) desc  # 출력 횟수 순으로 내림차순
                    limit 1)
order by r.review_date asc, r.review_text asc;

 

 

풀이

- 해당 서브쿼리 내부에서 멤버 id별로 그룹화하고, 각 그룹마다의 빈도수를 체크해서 내림차순으로 정렬, limit를 걸어서 1개만 출력한 다음 조건에 맞게 출력한다.

 

 

알게된 점

- order by count(*)를 사용하는 방법을 확실하게 몰랐다.

- 그리고 출력할 때 date 포맷을 계속 간과하는 바람에 정답이어도 한번에 나오지 못하는 경우가 더럿 있었다.

 

 

 

 

참고 사이트