sql多表计算问题

mc_devappear表中的数据可以计算出当天新增的设备数,launch2表中存储的数据可以计算出当天启动的所有设备数。用一句sql计算出二者比例(新增设备数/所有设备数)

【1】第一版
with temp as(
select count(distinct deviceid) as newdevnum from ana_fx_middle.mc_devappear where first_appear_hdfspar ='20161214' and hdfs_par='20161214'
full join
select count(distinct deviceid) as devicenum from src_huidu_mc.launch2 where hdfs_par ='20161214'
)
select newdevnum/devicenum from temp


缺陷:
AnalysisException: Syntax error in line 3: full join ^ Encountered: FULL Expected: AND, BETWEEN, DIV, GROUP, HAVING, ILIKE, IN, IREGEXP, IS, LIKE, LIMIT, NOT, OFFSET, OR, ORDER, REGEXP, RLIKE, UNION CAUSED BY: Exception: Syntax error

【2】第二版
with temp as(  
select * from
(select '1' as id, count(distinct deviceid) as newdevnum from ana_fx_middle.mc_devappear where first_appear_hdfspar ='20161214' and hdfs_par='20161214') as tmp1
left join
(select '1' as id,count(distinct deviceid) as devicenum from src_huidu_mc.launch2 where hdfs_par ='20161214' ) as tmp2
on tmp1.id=tmp2.id
)
select newdevnum/devicenum from temp


缺陷:devicenum为0的时候无法计算
【3】第三版
with temp as(  
select * from
(select '1' as id, count(distinct deviceid) as newdevnum from ana_fx_middle.mc_devappear where first_appear_hdfspar ='20161214' and hdfs_par='20161214') as tmp1
left join
(select '1' as id,count(distinct deviceid) as devicenum from src_huidu_mc.launch2 where hdfs_par ='20161214' ) as tmp2
on tmp1.id=tmp2.id
)
select (cast(newdevnum as bigint))/(if cast(devicenum as bigint)=0,1,cast(devicenum as bigint)) from temp
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值