SQL面试题——日期交叉问题
日期交叉问题
如下为平台商品促销数据:字段为品牌,打折开始日期,打折结束日期
id stt edt
oppo 2021-06-05 2021-06-09
oppo 2021-06-11 2021-06-21
vivo 2021-06-05 2021-06-15
vivo 2021-06-09 2021-06-21
redmi 2021-06-05 2021-06-21
redmi 2021-06-09 2021-06-15
redmi 2021-06-17 2021-06-26
huawei 2021-06-05 2021-06-26
huawei 2021-06-09 2021-06-15
huawei 2021-06-17 2021-06-21
计算每个品牌总的打折销售天数,注意其中的交叉日期
- 比如 vivo 品牌,第一次活动时间为 2021-06-05 到 2021-06-15,第二次活动时间为 2021-06-09 到 2021-06-21 其中 9 号到 15 号为重复天数,只统计一次,即 vivo 总打折天数为 2021-06-05 到 2021-06-21 共计 17 天。为了方便我们认为是16天,可以直接用date_diff 的结果表示
- 比如huawei品牌,第一次活动时间[2021-06-05 2021-06-26]是直接覆盖了后面两次活动时间的。
- redmi品牌,第一次活动