DBMS를 독학으로 공부하면서 유학을 꿈꾸는 초보 입문자입니다.
책은 Thosmas Connolly가 지은 DATABASE SYSTEMS을 보고 있는데
거기에 나온 연습문제입니다. 어떻게 쿼리를 작성해야 할지 몰라서
질문드립니다. 꼭 답변해 주시길.
다음과 같은 Hotel Schema가 있습니다.
Hotel (hotelNo, hotelName, city)
Room (roomNo, hotelNo, type, price)
Booking (hotelNo, guestNo, dateFrom,
dateTo, roomNo)
Guest (guestNo, guestName, guestAddress)
문1) London에 있는 모든 세부사항을 표시하라 (List full details
of all hotels in London).
제가 작성한 답) SELECT * FROM Hotel WHERE city='London'
제가 쓴 답에 문제가 없는지 확인 부탁드려요.
문2) 하루밤 이용료가 $40 이하인 더블룸과 패밀리 룸의 모든 사항을
가격의 오름차순으로 표시하라 (List all double or family rooms with
a price below $40.00 per night, in ascending order of price).
제가 작성한 답) SELECT * FROM Room WHERE price < $40.00 and
type in ('double', family room')
역시 맞는지 확인 부탁~ 근데 자신이 없어요.
문3) 그곳에 얼마나 많은 호텔인 있는가? (How many hotels are
there?) - Aggregate functions 활용
제가 작성한 답) SELECT COUNT(DISTINCT hotelNo) FROM Hotel
문4) 더블 룸으로부터 거두어 들이는 하루밤 수입은 얼마인가? (What
is the total revenue per night from all double rooms?) - Aggregate
functions 활용
제답 : SELECT SUM(price) FROM Room WHERE type='double'
문5) Grosvenor라는 호텔의 모든 방의 가격과 종류를 나타내라 (List
the price and type of all rooms at the Grosvenor Hotel).
제답 : SELECT price, type FROM Room WHERE hotelNo=(SELECT
hotelNo FROM Hotel WHERE hotelName='Grosvenor Hotel').
문6) Grosvenor 호텔에서 만일 방에 손님이 있는 경우 그 손님의
이름을 포함하여, 모든 방의 세부사항을 표시하라 (List the details of
all rooms at the Growvenor Hotel, including the name of the guest
staying in the room, if the room is occupied).
제답 : Subqueries 또는 Joins를 사용하랬는데 전혀 모르겠음.
가르쳐 주세요.
문7) Grosvenor 호텔에서 현재 빈방을 나타내시오 (List the rooms
that are currently unoccupied at the Grosvenor Hotel).
제답 : 역시 Subqueries 또는 Joins를 사용하랬는데 전혀 감이 안옴.
가르쳐 주세요.
문8) 각 호텔에서 방의 수를 나타내시오 (List the number of rooms
in each hotel).
제답 : SELECT hotelNo, Count(roomNo) AS myCount FROM Room GROUP
BY hotelNo ORDER BY hotelNo
정말 도움이 많이 필요합니다. 도움을 주신 분들께 행운이
가득하기를......
|