gpt4 book ai didi

mysql - 需要在具有开始日期和结束日期的选定日期之间按天列出活跃客户列表(也为空)

转载 作者:行者123 更新时间:2023-11-29 10:02:09 24 4
gpt4 key购买 nike

我们需要第一天和第二天之间没有活跃客户的结果

客户的开始日期和结束日期有时结束日期为空,我希望两个日期之间的活跃客户逐日结果

cust    strdate         end
1 2018-01-01 null
2 2018-01-01 2018-01-03
3 2018-01-02 2018-01-02
4 2018-01-04 null

我的外部通过日期 2018-01-01 至 2018-01-04 的结果

day         count
2018-01-01 2
2018-01-02 3
2018-01-03 2
2018-01-04 2

最佳答案

一个选项使用日历表来表示您想要查看的所有日期。出于示例数据的目的,我们可以将日期硬编码到 CTE 中。对于实际数据,您可能希望生成一个日期范围。这意味着下面别名为 d 的子查询将被替换为包含要包含在查询中的日期范围的实际表/ View 。

SELECT
d.date,
COUNT(*) AS count
FROM
(
SELECT '2018-01-01' AS date UNION ALL
SELECT '2018-01-02' UNION ALL
SELECT '2018-01-03' UNION ALL
SELECT '2018-01-04'
) d
LEFT JOIN yourTable t
ON d.date >= t.strdate AND (d.date <= t.enddate OR t.enddate IS NULL)
GROUP BY
d.date
ORDER BY
d.date;

enter image description here

Demo

此答案假设如果结束日期为NULL,则意味着范围的右侧完全开放,即所有日期都将匹配,前提是它们的开始日期也在范围内。

关于mysql - 需要在具有开始日期和结束日期的选定日期之间按天列出活跃客户列表(也为空),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52697498/

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