Post

10. SQL(Test)

10. SQL(Test)

[toc]

SQL 실전 Test

이번 실습은 RESERVATION, HOTEL, GUEST 테이블을 활용한 SQL 종합 문제 풀이로 구성되었다.
데이터 생성 → 조건별 필터링 → JOIN → 집계 및 정렬까지 전반적인 SQL 스킬을 점검해보았다.


✅ 테이블 구성 및 예시

RESERVATION

컬럼명타입설명
R_IDint예약 번호 (PK)
FROM_DATEdate체크인 날짜
TO_DATEdate체크아웃 날짜
HOTEL_IDvarchar(5)호텔 ID
GUSET_IDint손님 ID
PERIODint숙박일수

HOTEL

컬럼명타입설명
HOTEL_IDvarchar(5)호텔 ID (PK)
HOTEL_NAMEvarchar(50)호텔명
PRICEint1일 숙박 가격

GUEST

컬럼명타입설명
GUEST_IDint손님 ID (PK)
GUEST_NAMEvarchar(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