0

我有一个保存汽车预订的数据库。我正在尝试编写一个查询,该查询将为我提供足够的信息来填充具有以下属性的视图:

  1. 前几个月(最多 3 个),即 1 月的行将是 12 月、11 月、10 月
  2. 当月预订最多的位置。
  3. 当月该地点的预订数量。
  4. 当月在该位置保留的总小时数。

预订表的布局如下:

ResID, PickUpDateTime, ReturnDateTime, LocationName, VehicleSno

我已经尝试了两个小时来解决它,但我很难过。我有 COUNT(*) 语句来获取每个位置的小时数,但它有点偏离,因为它不受它应该属于的月份的限制。:/我真的很讨厌约会。

SELECT
    MONTH(PickupDateTime) AS Month,
    LocationName as Location,
    COUNT(*) AS NoOfRes,
    TIMESTAMPDIFF(HOUR, PickUpDateTime, ReturnDatetime) AS Hours   
FROM
    Reservation   
GROUP BY
    Location   
ORDER BY
    NoOfRes DESC
4

1 回答 1

0

要获取日期的月份,您可以使用该MONTH()功能。

因此,要获得 2 月份预订最多的位置,

select LocationName, count(*) num_reservations
  from reservation
 where month(PickUpDateTime) = 2 --This can be parameterized if needed
 group by LocationName
 order by num_reservations desc
于 2013-04-24T20:16:49.640 回答