Я работаю в гостиничной компании, и я установил таблицу фактов с детализацией ночи пребывания для каждого гостя, например, если гость останавливается на 3 ночи, будет ряд для каждой ночи пребывания.
То, что я пытаюсь сделать, - это определить показатель процента занятости (забронированные номера разделены на свободные номера).
У меня есть столбец в таблице фактов, в котором указано, сколько номеров в отеле , но просто суммирование этого значения не работает, потому что тогда оно просто умножает количество комнат на количество гостей. Поэтому мне нужно подвести итоги общего количества гостей, а затем разделить их на количество номеров, которые есть в данном отеле. Имеет ли это смысл?
[Меры]. [На книгах] / [Меры]. [Доступные комнаты]
SQL для этого будет:
SELECT stay.PropertyKey, prop.RoomsAvailable, stay.StayDateKey, COUNT(stay.Confirmation) AS Confirmation,
CAST(COUNT(stay.Confirmation) AS DECIMAL(13,9)) / CAST(prop.RoomsAvailable AS DECIMAL(13,9)) AS OccupancyPercentage
FROM dbo.FactStayNight stay
INNER JOIN
(
SELECT DISTINCT PropertyKey, RoomsAvailable
FROM dbo.FactStayNight
) prop
ON stay.PropertyKey = prop.PropertyKey
GROUP BY stay.PropertyKey, stay.StayDateKey, prop.RoomsAvailable