码迷,mamicode.com
首页 > 其他好文 > 详细

hive同环比实现

时间:2020-02-10 13:56:06      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:第一个   null   select   ring   string   sel   amp   条件   time   

select
          a.date
        , a.measure
        , case
                    when b.measure  is null
                              or b.measure=0
                              then null
                              else concat(
                    cast(
                      cast((if(a.measure is null, 0, a.measure)-if(b.measure is null,0,b.measure))*100/b.measure as decimal(10,2))
                     as string)
                  ,%) end as ratio_column from test_table a left join test_table b on ( to_date(from_unixtime(unix_timestamp(concat(a.date,‘‘),yyyyMM),yyyy-MM-dd HH:mm:ss))
                          = add_months(to_date(from_unixtime(unix_timestamp(concat(b.date,‘‘),yyyyMM),yyyy-MM-dd HH:mm:ss)),+1) and 1 = 1 )

提醒:

  1.第一个join条件的‘yyyyMM‘可以根据字段date的具体格式改变,‘yyyy-MM-dd HH:mm:ss‘不需要改变

  2.该同环比没有任何分组和汇总,所以一旦date字段有重复值,很容易出现笛卡尔积,解决方案是确保join条件能够确定一条数据在表中的唯一性

hive同环比实现

标签:第一个   null   select   ring   string   sel   amp   条件   time   

原文地址:https://www.cnblogs.com/wanshiming/p/12290448.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!