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 |
Tags
- 코딩테스트
- 스타터스부트캠프
- 유데미코리아
- 2024년
- AICE
- 태블로
- 프로그래머스
- Tableau Desktop Specialist
- 실습
- trouble shooting
- MySQL
- 프리온보딩
- 쿼리테스트
- 부트캠프후기
- 데이터분석
- 코테
- 유데미
- 파이썬
- 러닝스푼즈
- 프로젝트
- 취업부트캠프
- 자격증
- 회고록
- tableau
- 데이터분석가
- 데이터시각화
- 자격증준비
- SQL
- Python
- 유데미부트캠프
Archives
- Today
- Total
신이 되고 싶은 갓지이
SQL 코테 연습문제 풀이 solvesql 난이도.4 문제풀이 2 본문
1. 레스토랑 요일 별 구매금액 Top 3 영수증
https://solvesql.com/problems/top-3-bill/
solvesql.com
<문제>
레스토랑의 매니저는 요일 별로 큰 금액을 결제한 영수증을 찾고 싶습니다. 요일 별 결제 금액으로 Top 3(조건1) 를 지불한 영수증을 출력해주세요. 예를 들어 금요일 손님들의 결제 금액이 각각 $10, $9, $9, $8, $5, $2 였다면 상위 결제 금액 3개는 $10, $9, $8입니다. 따라서 결제 금액이 $10, $9, $9, $8인 총 4개의 영수증을 각각 출력(조건2)해야 합니다.
-> 우선 조건1을 만족하기 위해선 window 함수를 사용해야한다. 요일별이 PARTITION 을 'day'로, 결제 금액으로 TOP3이니 ODRER을 'total_bill'로 하였다. top3만 구하기 위해선 구한 rnk 칼럼을 써야하는데 WHERE문에서 window함수는 사용할 수 없으니, 서비쿼리로 찾아서 구했다. 마지막으로 예시에서 동일 금액이면 동일 rank를 부여하여, DENSE_RANK(동일값이면 동일순서&순서 건너뛰지 않기)로 순서를 구했다.
SELECT day, time, sex, total_bill
FROM (SELECT day, total_bill, time, sex
, DENSE_RANK() OVER(PARTITION BY day ORDER BY total_bill DESC) AS RNK -- 조건1,2
FROM tips ) A
WHERE RNK<=3 -- 조건1'SQL' 카테고리의 다른 글
| SQL 코테 연습문제 풀이 solvesql 난이도.1 문제풀이 1 (0) | 2025.03.18 |
|---|---|
| SQL 코테 연습 프로그래머스 Lv.5 문제풀이 10 (0) | 2025.03.15 |
| SQL 코테 연습 프로그래머스 Lv.5 문제풀이 9 (0) | 2025.03.01 |
| SQL 코테 연습 프로그래머스 Lv.4 문제풀이 8 (0) | 2025.02.26 |
| SQL 코테 연습 프로그래머스 Lv.4 문제풀이 7 (0) | 2025.02.25 |