当前位置:   article > 正文

SQL重叠交叉区间问题分析--HiveSQL面试题30_semanticexception end of a windowframe cannot be u

semanticexception end of a windowframe cannot be unbounded preceding

目 录

0 需求分析

1 数据准备

2 数据分析

3 小 结


0 需求分析

如下为平台商品促销

  • 数据: 字段为品牌,打折开始日期,打折结束日期
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天。 

1 数据准备

(1) 数据

vim brand.txt

  1. oppo 2021-06-05 2021-06-09
  2. oppo 2021-06-11 2021-06-21
  3. vivo 2021-06-05 2021-06-15
  4. vivo 2021-06-09 2021-06-21
  5. redmi 2021-06-05 2021-06-21
  6. redmi 2021-06-09 2021-06-15
  7. redmi 2021-06-17 2021-06-26
  8. huawei 2021-06-05 2021-06-26
  9. huawei 2021-06-09 2021-06-15
  10. huawei 2021-06-17 2021-06-21

(2)建表

  1. create table if not exists brand(
  2. id string,
  3. stt string,
  4. edt string
  5. )
  6. row format delimited
  7. fields terminated by '\t'
  8. ;

(3) 加载数据

load data local inpath "/home/centos/dan_test/brand.txt" into table brand;

(4) 查询数据

  1. hive> select * from brand;
  2. OK
  3. oppo 2021-06-05 2021-06-09
  4. oppo 2021-06-11 2021-06-21
  5. vivo 2021-06-05 2021-06-15
  6. vivo 2021-06-09 2021-06-21
  7. redmi 2021-06-05 2021-06-21
  8. redmi 2021-06-09 2021-06-15
  9. redmi 2021-06-17 2021-06-26
  10. huawei 2021-06-05 2021-06-26
  11. huawei 2021-06-09 2021-06-15
  12. huawei 2021-06-17 2021-06-21
  13. Time taken: 0.113 seconds, Fetched: 10 row(s)

2 数据分析

方法一:更新起始位置法

(1)比较基准点获取

问题分析:本题主要的问题点在于如何区分重叠日期

如果数据中没有重叠的日期的话,我们正常思维就是求出每行的结束日期与开始日期的差值&#

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/745935
推荐阅读
相关标签
  

闽ICP备14008679号