https://solvesql.com/problems/top-3-bill/
https://solvesql.com/problems/top-3-bill/
solvesql.com
🔍 문제
문제는 tips 테이블 데이터를 사용하여 레스토랑의 요일별(day)로 가장 큰 금액을 결제한 영수증을 찾는 것이 목표
- 기준: total_bill 컬럼의 결제 금액을 기준으로 합니다.
- 그룹화: 영수증을 **요일(day)**별로 그룹화합니다.
- 필터링: 각 요일 그룹 내에서 결제 금액(total_bill) Top 3에 해당하는 영수증을 모두 출력해야 합니다.
- 예외 처리 (동점): 만약 Top 3 결제 금액에 해당하는 동점(Tie)이 발생하면, 해당 동점 금액을 결제한 모든 영수증을 출력해야 합니다.
- 예시: 상위 3개 금액이 $10, $9, $8인 경우, $10, $9, $9, $8에 해당하는 모든 영수증을 출력합니다.
🎯정답
select day, time, sex, total_bill
from (SELECT *, dense_rank() over(partition by day order by total_bill desc) as bill_rank
from tips)
where bill_rank <= 3;
❓풀이
- dense_rank를 사용해서 동일한 값에 대해서도 순위가 건너뛰지 않고 같이 표현될 수 있게 만들어줘야 함
- total_bill 기준으로 내림차순 정렬해서 상위 3개만 where절에서 필터링
'프로그래밍 언어 > 02. SQL' 카테고리의 다른 글
| [PostgreSQL] solvesql LV.3 미세먼지 수치의 계절간 차이 (with 중앙값 구하는 방법) (0) | 2025.10.22 |
|---|---|
| [PostgreSQL] solvesql LV.3 전국 카페 주소 데이터 정제하기 (with. 문자열 처리하기) (0) | 2025.10.21 |
| [PostgreSQL] solvesql LV.3 멀티 플랫폼 게임 찾기 (0) | 2025.10.21 |
| [PostgreSQL] solvesql LV.3 폐쇄할 따릉이 정류소 찾기 2 (0) | 2025.10.15 |
| [PostgreSQL] solvesql LV.3 서울숲 요일별 대기오염도 계산하기 (with.날짜에서 요일 출력하기) (0) | 2025.10.15 |