mysql - 如何计算 MySQL 递归 CTE 中的 Running Total?
问题描述
我有一个预订数据库内容的开始、结束日期以及成人和儿童的编号。我正在创建一个查询,计算每天预订房间的总数以及成人和儿童的总数。每条记录代表一个房间,因此计算 ID 会给我房间总数。但是,在递归部分,我的总和没有带来正确的成人和儿童总和。
以下是我的表和查询结构。感谢您是否愿意协助合作。
桌子:
CREATE TABLE `bookings` (
`id` int(11) NOT NULL,
`res_start` date DEFAULT NULL,
`res_end` date DEFAULT NULL,
`adult` double NOT NULL DEFAULT 0,
`child` double NOT NULL DEFAULT 0,
询问:
SET @runadt:=0;
SET @rundhd:=0;
WITH RECURSIVE cte AS (
SELECT
id,
(@runadt := @runadt + adult) AS adult_fc,
(@runchd := @runchd + child) AS child_fc,
res_start as date_from,
res_end as date_to,
res_end as _du
FROM bookings
UNION ALL
SELECT
id,
adult_fc,
Child_fc,
DATE_ADD(cte.date_from, INTERVAL 1 DAY),
DATE_ADD(cte.date_from, INTERVAL 1 DAY),
_du
FROM cte
WHERE DATE_ADD(date_from, INTERVAL 1 DAY) < _du
)
SELECT COUNT(id), adult_fc, child_fc, date_from FROM cte
GROUP BY date_from
ORDER BY date_from
解决方案
不,这不是我想要达到的结果,例如:
1st booking 1 room 2 adult 1 Child, 2021-01-10 / 2021-01-12
2nd booking 1 room 3 adult 1 Child 2021-01-11 / 2021-01-13
结果如下:
Date Room Adult Child
2021-01-10 1 2 1
2021-01-11 2 5 2
2021-01-12 1 3 1
推荐阅读
- c# - 使用 C# Regex 验证以数字 6 或 7 开头的电话号码
- python - 具有多个绘图的 Bokeh HoverTool
- python - 如何从多个 txt 文件中拆分句子,同时跟踪它来自哪个段落及其在段落中的位置?
- python - 错误:无法为使用 PEP 517 且无法直接安装的熊猫构建轮子
- spring-boot - 在 Spring Boot 中创建 google Oauth2 自定义错误页面
- javascript - 使用机车滚动滚动时图像或内容消失
- react-native - 如何在亚马逊移动分析上进行个人用户跟踪?
- json - 解析 JSON 以角度显示数据
- opencv - 两个版本的 OpenCV 以及如何消除一个
- reactjs - 反应钩子。无法读取嵌套列表的属性“地图”