Bootstrap

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

计算每个品牌总的打折销售天数,注意其中的交叉日期

  1. 比如 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 的结果表示
  2. 比如huawei品牌,第一次活动时间[2021-06-05 2021-06-26]是直接覆盖了后面两次活动时间的。
  3. redmi品牌,第一次活动
;