[57] 부트캠프 TIL - 본캠프 39일차

2024. 10. 17. 18:28부트캠프 TIL

728x90

1. 프로그래머스 사용

1-1)  sql 문제 : 즐겨찾기가 가장 많은 식당 정보 출력하기

ㄴ 문제 : 식당 정보 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요.

 

 

ㄴ 설명_1 : 조회할 컬럼 체크 - 음식종루, 식당ID, 식당이름, 즐겨찾기수

ㄴ 설명_2 : 음식종류별로 - GROUP BY 사용

ㄴ 설명_3 : 즐겨찾기수가 가장 많은 - ORDER BY DESC 활용

ㄴ 설명_4 : 음식종류 내림차순 정렬 - ORDER BY DESC

ㄴ 실제 쿼리 :

SELECT
    FOOD_TYPE,
    REST_ID,
    REST_NAME,
    FAVORITES
FROM 
(
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES FROM REST_INFO 
ORDER BY FAVORITES DESC
LIMIT 18446744073709551615
) a
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC 

ㄴ 이번에 핵심 포인트는 ORDER BY로 즐겨찾기수가 가장 많은 데이터를 먼저 찾고, GROUP BY로 음식종류 기준으로 그룹화 해야하는 것이다.

ㄴ 그냥 GROUP BY, ORDER BY를 진행하면 그룹화가 먼저 진행이되어 즐겨찾기 수 가장많은 데이터기준을 찾을수가 없다.

ㄴ 예전에 회사에서 일할때 똑같은 케이스가 있어서 사용했던 방법인데 limit(2^64 - 1)의 값을 넣어주면 ORDER BY로 먼저 정렬한 후 GROUP BY로 그룹화가 가능하다.

 

https://mingggu.tistory.com/115

 

[MySQL] 서브쿼리 ORDER BY 정렬 바뀔 때, 원하는 값으로 GROUP BY 하기

특정 Key로 Group by 시 첫번째 데이터를 기준으로 묶이게 된다. 1 team_A 토끼 2 team_A 말 3 team_A 강아지 위와 같은 데이터로 예를 들면 ’team_A’로 Group By 할 경우 첫번째 데이터를 기준으로 1 team_A 토

mingggu.tistory.com

ㄴ 해당 블로그에서 활용했다. 똑같은 글을 3개나 발견했는데 가장 최초로 작성된 글을 가져왔다.

 

728x90