您可以使用条件聚合将现有查询包装在另一个查询中,以便为您提供每个周期长度的计数:
SELECT SUM(day_diff BETWEEN 1 AND 7) AS `1 to 7 days`,
SUM(day_diff BETWEEN 8 AND 14) AS `8 to 14 days`,
SUM(day_diff BETWEEN 15 AND 30) AS `15 to 30 days`,
SUM(day_diff BETWEEN 31 AND 45) AS `31 to 45 days`,
SUM(day_diff BETWEEN 46 AND 60) AS `46 to 60 days`,
SUM(day_diff BETWEEN 61 AND 90) AS `61 to 90 days`,
SUM(day_diff BETWEEN 91 AND 120) AS `91 to 120 days`,
SUM(day_diff BETWEEN 121 AND 180) AS `121 to 180 days`
FROM (SELECT DATEDIFF(booking_date, leaving_date) AS day_diff
FROM hotel_booking) dd
要按预订月份对值进行分组,请将查询更改为
SELECT MONTH(booking_date) AS booking_month,
SUM(day_diff BETWEEN 1 AND 7) AS `1 to 7 days`,
SUM(day_diff BETWEEN 8 AND 14) AS `8 to 14 days`,
SUM(day_diff BETWEEN 15 AND 30) AS `15 to 30 days`,
SUM(day_diff BETWEEN 31 AND 45) AS `31 to 45 days`,
SUM(day_diff BETWEEN 46 AND 60) AS `46 to 60 days`,
SUM(day_diff BETWEEN 61 AND 90) AS `61 to 90 days`,
SUM(day_diff BETWEEN 91 AND 120) AS `91 to 120 days`,
SUM(day_diff BETWEEN 121 AND 180) AS `121 to 180 days`
FROM (SELECT DATEDIFF(booking_date, leaving_date) AS day_diff
FROM hotel_booking) dd
GROUP BY booking_month
ORDER BY booking_month