Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 1차원 DP
- 2차원 dp
- 99클럽
- @Builder
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- ApplicationEvent
- assertThat
- async/await
- AVG
- AWS
- Azure
- bind
- builder
- button
- c++
- c++ builder
- c03
- Callback
- case when
- CCW
- chat GPT
- CICD
Archives
- Today
- Total
기록
프로그래머스_식품분류별 가장 비싼 식품의 정보 조회하기 본문
문제
https://school.programmers.co.kr/learn/courses/30/lessons/131116#qna
풀이
비슷한 문제
2023.06.24 - [코딩테스트/SQL] - 프로그래머스_그룹별 조건에 맞는 식당 목록 출력하기
RANK() 함수와 DENSE_RANK() 함수
해당 문제에서는 어떤 함수를 사용해도 상관 없지만, 두 함수가 다른 답변들에서 자주 보여서 정리하고 넘어가려고 한다.
RANK() 함수는 동일한 순위를 가진 행에 대해 동일한 순위를 할당하고, 그 다음 순위는 건너뛴다. 이는 중복된 순위가 있을 경우에도 다음 순위를 건너뛰고 증가한다.
DENSE_RANK() 함수는 동일한 순위를 가진 행에 대해 동일한 순위를 할당하고, 그 다음 순위를 연속적으로 부여한다. 이는 중복된 순위가 있을 경우에도 다음 순위를 연속적으로 증가한다.
RANK() 함수는 공백이 있는 순위를 반환할 수 있지만, DENSE_RANK() 함수는 연속적인 순위를 반환한다.
코드
SELECT CATEGORY
, PRICE
, PRODUCT_NAME
FROM (
SELECT CATEGORY
, PRICE
, PRODUCT_NAME
, RANK() OVER (PARTITION BY CATEGORY ORDER BY PRICE DESC) RANK
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자', '국', '김치', '식용유')
)
WHERE RANK = 1
ORDER BY PRICE DESC
'코딩테스트 > SQL' 카테고리의 다른 글
프로그래머스_가격이 제일 비싼 식품의 정보 출력하기 (0) | 2023.09.10 |
---|---|
프로그래머스_서울에 위치한 식당 목록 출력하기 (0) | 2023.06.24 |
프로그래머스_그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2023.06.24 |
프로그래머스_조건에 부합하는 중고거래 댓글 조회하기 (0) | 2023.06.24 |
프로그래머스_3월에 태어난 여성 회원 목록 출력하기 (0) | 2023.06.24 |
Comments