我有 3 张桌子:
Hotel {hotelID, hotelName, city}
Room {hotelID, roomNo, price, type}
Booking {hotelID, roomNo, startDate, endDate}
我想找到当月的收入损失(即计算当月每天的收入损失,然后计算总数)
我该怎么做呢?
快速编辑:只需要查找 hotelName = 'Radisson' 的收入
应该管用:
SELECT COALESCE(SUM(r.price), 0)
FROM Room AS r INNER JOIN Booking AS b ON r.hotelID = b.hotelID AND r.roomNo = b.roomNo
INNER JOIN Hotel AS h ON r.hotelID = h.hotelID
WHERE (month(b.startDate) > month(current_date()) OR month(b.endDate) < month(current_date()))
AND h.hotelName = 'Radisson';
这是您查询的开始。你懒得放数据,所以我懒得去查找mysql形式的查询......
查看每个房间的数据后 - 如果您愿意,您可以合并为一个总和。这就是您编写查询以确保您正确执行每个步骤的方式
select
ht.hotelid
,ht.hotelname
,ht.city
,rm.roomno
,rm.price
,rm.type
,30 as days -- use your datediff function for month instead of literal 30
,30 * rm.price as potential -- use your datediff function instead of literal 30
,sum(datediff(day, startdate, enddate)) * rm.price as earned
--, potential - earned as lost (use the 2 prior columns to calc)
from hotel ht
join room rm on ht.hotelid = rm.hotelid
left join booking bk on bk.hotelid = rm.hotelid
and bk.roomno =bk.roomno