[SQL]프로그래머스 - 즐겨찾기가 가장 많은 식당 정보 출력

2023. 5. 30. 13:44· DB/SQL

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/131123

FOOD_TYPE 별 좋아요 수가 젤 많은 행 한건만 출력해야 함.

 


<시도1. group by ~ having 절 사용>
- FOOD_TYPE별로 그룹화 한 후, having에 max 조건을 걸어 좋아요수가 젤 많은 음식점 한건만 출력하려 했음.
- 문제 : 단순히 젤 첫번째 FOOD_TYPE 행만 나오고, max 요건은 따지지 않음.

- 이유

: having은 group by에서 집계한 결과물에서 단순히 filter하는 역할이다. 때문에 max()를 이용해 새로운  연산을 할 수 없다.

: having 뒤에는 조건이 나와야 하는데 이건 단순히 max함수를 실행해서 값을 조회한 것이기 때문에, 이건 조건문이 아니다!

  만일 having max(FAVORITES)> 1000 이런 코드였다면 올바른 조건이기 때문에 유효한 코드가 될 것이다.

 select * from REST_INFO  group by FOOD_TYPE  having(max(FAVORITES))

max조건이 걸리지 않고, 첫번째로 조회되는 REST_NAME이 나온다.


 

<시도2.  그룹화 한 후, 집계함수 max로 행 조회 >

select  * , max(FAVORITES)  from REST_INFO  group by FOOD_TYPE

max함수를 통해 제대로된 조회된 결과

- 기존 테이블과 max값을 조회한 테이블을 조인시키는데, 이때 조인 조건은 두 테이블간 FOOD_TYPE과  FAVORITES가 같아야 한다.

select R.FOOD_TYPE,R.REST_ID,R.REST_NAME,R.FAVORITES 
from REST_INFO R 
join (select FOOD_TYPE, max(FAVORITES) as maxFav 
	  from REST_INFO 
      group by FOOD_TYPE) T
	  on R.FOOD_TYPE = T.FOOD_TYPE and R.FAVORITES = T.maxFav
order by R.FOOD_TYPE desc

 


참고자료

 

https://www.inflearn.com/questions/161097/having-%EC%A0%88%EC%97%90-max-%EC%82%AC%EC%9A%A9-%EA%B2%B0%EA%B3%BC%EC%97%90-%EB%94%B0%EB%A5%B8-%EC%A7%88%EB%AC%B8

 

https://helloino.tistory.com/120

 

 

 

'DB > SQL' 카테고리의 다른 글

[SQL]프로그래머스 - 자동차 평균 대여 기간 구하기  (0) 2023.05.31
[SQL] 행 입력, 수정, 삭제 CRUD  (0) 2023.05.30
[SQL] join, on  (0) 2023.05.25
[SQL]Group by, Having, 집계함수  (0) 2023.05.23
[SQL] 서브쿼리 - TODO  (0) 2023.05.21
'DB/SQL' 카테고리의 다른 글
  • [SQL]프로그래머스 - 자동차 평균 대여 기간 구하기
  • [SQL] 행 입력, 수정, 삭제 CRUD
  • [SQL] join, on
  • [SQL]Group by, Having, 집계함수
journey-dev
journey-dev
journey-dev
journey-dev
journey-dev
전체
오늘
어제
  • 분류 전체보기 (63)
    • 프론트엔드 (17)
      • JS (8)
      • React (8)
      • vue (9)
      • Typescript (2)
    • 개발서적 (1)
      • 코어 자바스크립트 (0)
      • 프론트엔드 성능 최적화 가이드 (1)
    • CS (4)
      • Docker (0)
      • 자료구조&알고리즘 (2)
      • 네트워크 (2)
    • DB (11)
      • SQL (11)
    • GIT (0)
    • GIS (3)
    • 개발일기 (0)
    • ing (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 일단 시작해라. 나중에 완벽해지면 된다.

인기 글

태그

  • 리액트 복기하기!

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
journey-dev
[SQL]프로그래머스 - 즐겨찾기가 가장 많은 식당 정보 출력
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.