solvesql 사이트 문제는 사이트에 들어가서 확인해보실 수 있습니다.
https://solvesql.com
https://solvesql.com
solvesql.com
01. 작성 쿼리
SELECT
stamp,
count(*) AS count_bill
FROM
(SELECT
CASE
WHEN total_bill >= 25 THEN 2
WHEN total_bill >= 15 THEN 1
ELSE 0
END AS stamp
FROM tips
) AS t
GROUP BY stamp
ORDER BY stamp;
02. 쿼리 결과

03. 풀이 포인트
① FROM 절의 서브쿼리에서 CASE WHEN으로 “스탬프 개수(stamp)” 컬럼 생성
- 영수증 한 행마다 total_bill → stamp : 2, 1, 0
- 즉, "스탬프가 찍힌 완성된 테이블"을 만듭니다
② 그 서브쿼리 결과를 메인 쿼리의 입력 테이블로 사용
- 이제 tips가 아니라 "stamp가 포함된 가상 테이블"을 사용합니다
③ 그 stamp 값을 기준으로 GROUP BY
- stamp = 0 인 영수증 몇 개
- stamp = 1 인 영수증 몇 개
- stamp = 2 인 영수증 몇 개
이런 식으로 GROUP BY를 진행.
④ SELECT 절에서 count(*)로 영수증 개수를 세기
- GROUP BY가 stamp별 묶음
- COUNT(*)로 묶인 그룹 수 count
→ 원하는 최종 결과가 나옵니다
'코딩 테스트 > 02. SQL' 카테고리의 다른 글
| (solvesql)Advent of SQL 2025 7일차 (0) | 2025.12.08 |
|---|---|
| (solvesql) Advent of SQL 2025 6일차 (0) | 2025.12.08 |
| [solvesql_Lv3] 미세먼지 수치의 계절간 차이(중앙값구하기) (0) | 2025.10.14 |
| [solvesql_Lv3]멘토링 짝꿍 리스트(JOIN에서 ON의 특징) (2) | 2025.10.14 |
| [solvesql_Lv3] 작품이 없는 작가 찾기 (0) | 2025.10.13 |
