gpt4 book ai didi

sql - 在 Oracle 中计算条件累积总和

转载 作者:行者123 更新时间:2023-12-04 21:53:11 27 4
gpt4 key购买 nike

我正在尝试做的事情的广泛观点是,在预订被预订的日期之前,找出整个系统中的账簿上还有多少尚未发生的预订。这意味着计算存在 redemption_date 的所有记录的数量。之后或等于 booking_date , 按 booking_date 分组.请参阅以下假设示例以获得更好的解释:

redemption_date      booking_date
2013-01-01 2013-01-01
2013-01-06 2013-01-01
2013-01-06 2013-01-01
2013-01-07 2013-01-02
2013-01-08 2013-01-03
2013-01-09 2013-01-04
2013-01-10 2013-01-05
2013-01-10 2013-01-05
2013-01-10 2013-01-05
2013-01-10 2013-01-05
2013-01-10 2013-01-05
2013-01-11 2013-01-05

我想要结果:
booking_date         number_of_reservations
2013-01-01 3
2013-01-02 3
2013-01-03 4
2013-01-04 5
2013-01-05 11

但是我的大脑完全不知道应该如何构建查询。有小费吗?谢谢!

编辑:
澄清一下,number_of_reservations 应该是当天预订的预订数量,以及之后几天预订的预订数量。换句话说,number_of_reservations 是截至预订日期(尚未发生)在数据库中的预订数量。
我原来的结果确实有错误。对困惑感到抱歉

最佳答案

SELECT
booking_date,
COUNT(
CASE WHEN redemption_date >= booking_date
THEN 1 END
) AS number_of_reservations
FROM
Reservations
GROUP BY
booking_date

Sql Fiddle

编辑:

根据更新的描述,我相信这应该会给出预期的结果:
SELECT DISTINCT
r."booking_date",
(SELECT COUNT(*)
FROM reservations r2
WHERE
r2."booking_date" <= r."booking_date"
AND r2."redemption_date" >= r."booking_date"
) AS number_of_reservations
FROM
Reservations r
ORDER BY r."booking_date"

Sql Fiddle

关于sql - 在 Oracle 中计算条件累积总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14987534/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com