CREATE TABLE #Hotels
(HotelID int, HotelName varchar(10), HotelAddress varchar(10), HotelCity varchar(10), HotelState varchar(10), HotelPostalCode varchar(10))
CREATE TABLE #Reservation
(
ReservationID int, GuestID int, RoomID int, CheckinDate datetime, NumberofNights int
)
CREATE TABLE #Room
(
RoomID int, HotelID int
)
INSERT INTO #Hotels (HotelID,HotelName) VALUES (1,'A')
INSERT INTO #Hotels (HotelID,HotelName) VALUES (2,'B')
GO
INSERT INTO #Reservation (ReservationID,GuestID,RoomID,CheckinDate,NumberofNights)
VALUES (1,1,1,'2016-01-05',5)
INSERT INTO #Reservation (ReservationID,GuestID,RoomID,CheckinDate,NumberofNights)
VALUES (2,2,1,'2016-08-05',3)
INSERT INTO #Reservation (ReservationID,GuestID,RoomID,CheckinDate,NumberofNights)
VALUES (3,3,1,'2016-06-05',2)
INSERT INTO #Reservation (ReservationID,GuestID,RoomID,CheckinDate,NumberofNights)
VALUES (4,1,1,'2016-01-12',1)
INSERT INTO #Reservation (ReservationID,GuestID,RoomID,CheckinDate,NumberofNights)
VALUES (5,2,1,'2016-08-18',8)
INSERT INTO #Reservation (ReservationID,GuestID,RoomID,CheckinDate,NumberofNights)
VALUES (6,3,1,'2016-06-30',7)
INSERT INTO #Reservation (ReservationID,GuestID,RoomID,CheckinDate,NumberofNights)
VALUES (1,1,2,'2016-02-01',5)
INSERT INTO #Reservation (ReservationID,GuestID,RoomID,CheckinDate,NumberofNights)
VALUES (2,2,2,'2016-02-06',3)
INSERT INTO #Reservation (ReservationID,GuestID,RoomID,CheckinDate,NumberofNights)
VALUES (3,3,2,'2016-02-09',2)
INSERT INTO #Reservation (ReservationID,GuestID,RoomID,CheckinDate,NumberofNights)
VALUES (4,1,2,'2016-04-03',1)
INSERT INTO #Reservation (ReservationID,GuestID,RoomID,CheckinDate,NumberofNights)
VALUES (5,2,2,'2016-04-07',8)
INSERT INTO #Reservation (ReservationID,GuestID,RoomID,CheckinDate,NumberofNights)
VALUES (6,3,2,'2016-04-05',7)
INSERT INTO #Reservation (ReservationID,GuestID,RoomID,CheckinDate,NumberofNights)
VALUES (1,1,3,'2016-07-01',15)
INSERT INTO #Reservation (ReservationID,GuestID,RoomID,CheckinDate,NumberofNights)
VALUES (2,2,3,'2016-11-06',2)
INSERT INTO #Reservation (ReservationID,GuestID,RoomID,CheckinDate,NumberofNights)
VALUES (3,3,3,'2016-11-09',9)
INSERT INTO #Reservation (ReservationID,GuestID,RoomID,CheckinDate,NumberofNights)
VALUES (4,1,3,'2016-12-03',8)
INSERT INTO #Reservation (ReservationID,GuestID,RoomID,CheckinDate,NumberofNights)
VALUES (5,2,3,'2016-06-07',10)
INSERT INTO #Reservation (ReservationID,GuestID,RoomID,CheckinDate,NumberofNights)
VALUES (6,3,3,'2016-04-05',2)
INSERT INTO #Room VALUES (1,1)
INSERT INTO #Room VALUES (2,1)
INSERT INTO #Room VALUES (3,2)
하고 "마법"여기에 당신에게 한 달에 기본 행을 줄 것이다 HotelID 및 MONTH (re.CheckinDate)에 의해
SELECT HotelName, MONTH(re.CheckinDate) as Month, COUNT(*) as TotalArrivals, AVG(CAST(re.NumberofNights as decimal(22,6))) AS Avg
FROM #Hotels h
join #Room r on r.HotelID = h.HotelID
join #Reservation re on re.RoomID = r.RoomID
GROUP BY h.HotelID, HotelName, MONTH(re.CheckinDate)
당신이 선택을 사용한다 무엇을해야
및 그룹 (각 호텔에 대해 12 행을 얻을 것입니다). COUNT (*)를 사용하면 특정 호텔에 대해 한 달 동안 모든 기록을 가져 오며 총 도착 수를 표시하며 평균 (NumberofNights)을 사용하면 평균 숙박 수를 알 수 있습니다.
또한 NumberofNights가 int 인 경우 regeNumberofNights를 사용하므로 평균은 3 개의 도착과 10 일 동안 int를 반환하므로 3을 반환합니다. 3.333333하지 않음.
희망이 있습니다.
'GROUP BY' 및 집계 함수 (예 : 'COUNT' 및'AVG')를 사용하십시오. – ZLK
'CheckinDate'가 2016-05-31이고'NumberofNights'가 2이면 어떨까요? – Blank
체크인 날짜가 월말 일 수 있으므로 다음 달에 들어갈 수있을만큼 정확하게 예측할 수 없습니다. 너는 그 때 무엇을 할 것인가? – Apostolos