일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 시각화
- 서브쿼리
- 클러스터링
- 프로젝트
- pandas
- 크롤링
- da
- 전처리
- lambda
- 프롬프트 엔지니어링
- 태블로
- 기초통계
- SQLD
- 군집화
- Chat GPT
- 기초프로젝트
- 데이터분석
- data analyst
- SQL
- cross join
- Python
- 머신러닝
- 팀프로젝트
- 최종 프로젝트
- GA4
- streamlit
- If
- 데이터 분석
- jd
- 히트맵
Archives
- Today
- Total
세조목
SQL 예제 정리(프로그래머스 - '즐겨찾기가 가장 많은 식당 정보 출력하기') 본문
최종 프로젝트가 끝이 나서 한동안 풀지 못했던 SQL 예제들을
처음부터 다시 복습하는 시간을 가지려하고,
그 중에서 푸는데 오래 걸렸던 문제들 위주로 정리할 예정입니다.
즐겨찾기가 가장 많은 식당 정보 출력하기
https://school.programmers.co.kr/learn/courses/30/lessons/131123
문제는 심플합니다.
음식종류별로 즐겨찾기수가 가장 많은 식당을 찾아내는 문제입니다.
처음에 저는 MAX를 사용했었는데요,
이상하게 MAX로는 음식종류별로 즐겨찾기수가 가장 많은 식당을 뽑아낼 수 없었습니다.
그래서 RANK OVER function을 사용했습니다.
SELECT A.FOOD_TYPE,
A.REST_ID,
A.REST_NAME,
A.FAVORITES
FROM
(
SELECT FOOD_TYPE,
REST_ID,
REST_NAME,
FAVORITES,
RANK() OVER(PARTITION BY FOOD_TYPE ORDER BY FAVORITES DESC) RANKING
FROM REST_INFO
) A
WHERE A.RANKING = 1
ORDER BY A.FOOD_TYPE DESC;
FROM절에 RANK OVER function을 활용한 서브쿼리문이 들어가 있습니다.
이렇게 서브쿼리문을 넣어놓으면
본 쿼리의 WHERE절에서 RANK가 1인 녀석들만 필터링하면 됩니다.
본 쿼리 SELECT 절에는 문제에서 출력하라고 했던
'음식 종류', '레스토랑 ID', '레스토랑 이름', '즐겨찾기 수'를 넣어줍니다.
'데이터 분석 공부 > SQL' 카테고리의 다른 글
SQL 예제 정리('자동차 대여 기록에서 대여 중/대여 가능 여부 구분하기') (0) | 2024.05.02 |
---|---|
SQL 예제 정리('재구매가 일어난 상품과 회원 리스트 구하기') (1) | 2024.05.01 |
SQL 예제(Consecutive Numbers)(Lead 함수) (0) | 2024.02.22 |
SQL 예제(Triangle Judgement) (0) | 2024.02.21 |
SQL 예제 풀이(Leetcode - Confirmation Rate) (0) | 2024.02.02 |