[toc]
SQL 실전 Test
이번 실습은 RESERVATION, HOTEL, GUEST 테이블을 활용한 SQL 종합 문제 풀이로 구성되었다.
데이터 생성 → 조건별 필터링 → JOIN → 집계 및 정렬까지 전반적인 SQL 스킬을 점검해보았다.
✅ 테이블 구성 및 예시
RESERVATION
컬럼명 | 타입 | 설명 |
---|
R_ID | int | 예약 번호 (PK) |
FROM_DATE | date | 체크인 날짜 |
TO_DATE | date | 체크아웃 날짜 |
HOTEL_ID | varchar(5) | 호텔 ID |
GUSET_ID | int | 손님 ID |
PERIOD | int | 숙박일수 |
HOTEL
컬럼명 | 타입 | 설명 |
---|
HOTEL_ID | varchar(5) | 호텔 ID (PK) |
HOTEL_NAME | varchar(50) | 호텔명 |
PRICE | int | 1일 숙박 가격 |
GUEST
컬럼명 | 타입 | 설명 |
---|
GUEST_ID | int | 손님 ID (PK) |
GUEST_NAME | varchar(5) | 손님 이름 |
실습 문제 및 쿼리
문제 1: p003 호텔 예약만 출력
1
2
3
| SELECT R_ID , HOTEL_ID , FROM_DATE , TO_DATE
FROM final_test.RESERVATION
WHERE HOTEL_ID = 'p003';
|
문제 2: 호텔별 예약자 수 출력
1
2
3
4
5
| SELECT r.HOTEL_ID , COUNT(*) as '예약자 수'
FROM final_test.RESERVATION r
JOIN final_test.HOTEL h ON r.HOTEL_ID = h.HOTEL_ID
JOIN final_test.GUEST g ON r.GUEST_ID = g.GUEST_ID
GROUP BY r.HOTEL_ID;
|
문제 3: 전체 예약 목록 + 호텔명 + 가격 + 손님이름 (이름 오름차순 정렬)
1
2
3
4
5
| SELECT r.R_ID, r.FROM_DATE, r.TO_DATE, h.HOTEL_NAME, h.PRICE, g.GUEST_NAME
FROM final_test.RESERVATION r
JOIN final_test.HOTEL h ON r.HOTEL_ID = h.HOTEL_ID
JOIN final_test.GUEST g ON r.GUEST_ID = g.GUEST_ID
ORDER BY g.GUEST_NAME ASC;
|
문제 4: 손님별 총 숙박일 수 출력
1
2
3
4
| SELECT r.GUEST_ID, SUM(r.PERIOD) as '총 숙박일 수'
FROM final_test.RESERVATION r
JOIN final_test.GUEST g ON r.GUEST_ID = g.GUEST_ID
GROUP BY r.GUEST_ID;
|
Summary
- 쿼리를 작성할 땐 한글로 요구사항을 먼저 정리하면 훨씬 명확하다.
JOIN
, GROUP BY
, ORDER BY
등의 키워드는 실무에서도 매우 빈번하게 사용된다.- 컬럼 순서와 alias는 출력 결과의 가독성을 높이는 데 필수적이다.
End