博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hive:有表A与表B进行inner join,如果A分组内包含有数据,使用A,否则使用B分组下的数据...
阅读量:6988 次
发布时间:2019-06-27

本文共 2225 字,大约阅读时间需要 7 分钟。

tommyduan_fingerlib 指纹库 栅格小区级别数据

tommyduan_mr_grid_cell_result_all 统计 栅格小区级别数据
业务:
以tommyduan_mr_grid_cell_result_all为主,如果某个栅格(gridid,buildingid,floor)没有小区的话,使用用指纹库的栅格(gridid,buildingid,floor)下的小区;
否则,使用tommyduan_mr_grid_cell_result_all的栅格(gridid,buildingid,floor)下的小区填充。

数据示例:

--指纹库--gridid1,buildlingid1,floor1,cell1--gridid1,buildlingid1,floor1,cell2--gridid1,buildlingid1,floor1,cell3--gridid2,buildlingid1,floor1,cell31--gridid2,buildlingid1,floor1,cell298--统计结果--gridid1,buildlingid1,floor1,cell2222--gridid1,buildlingid1,floor1,cell3333--合并后的结果:--gridid1,buildlingid1,floor1,cell2222--gridid1,buildlingid1,floor1,cell3333--gridid2,buildlingid1,floor1,cell31--gridid2,buildlingid1,floor1,cell298

实现思路:

首先,统计出每个分组属于那个表。

create table tommyduan_gridcell_group asselect t10.gridid,t10.buildingid,t10.floor,(case when isnull(t11.buildingid) then 'fingerlib' else 'mr_grid_cell' end) as datafromfrom (select gridid,buildingid,floor from tommyduan_fingerlib group by gridid,buildingid,floor) t10left outer join(select gridid,buildingid,floor    from tommyduan_mr_grid_cell_result_all group by gridid,buildingid,floor) t11on t10.gridid=t11.gridid and t10.buildingid=t11.buildingid and t10.floor=t11.floor;

其次,根据数据分组所在的表去那个表关联出数据。

select t10.gridid,t10.objectid,t10.longitude,t10.latitude,t10.gridx,t10.gridy,    t10.floor,t10.avgrsrp,t10.total_num,t10.mr_weak_num,    t10.avgrsrq,t10.avgsinrul,    t10.sinrul_total_num,t10.sinrul_low_num,t10.buildingidfrom tommyduan_fingerlib t10 inner join (select * from tommyduan_gridcell_group where datafrom='fingerlib') t11 on t10.gridid=t11.gridid and t10.buildingid=t11.buildingid and t10.floor=t11.floorunion allselect t10.gridid,t10.objectid,t10.longitude,t10.latitude,t10.gridx,t10.gridy,    t10.floor,t10.avgrsrp,t10.total_num,t10.mr_weak_num,    t10.avgrsrq,t10.avgsinrul,    t10.sinrul_total_num,t10.sinrul_low_num,t10.buildingidfrom tommyduan_mr_grid_cell_result_all t10 inner join (select * from tommyduan_gridcell_group where datafrom='mr_grid_cell') t11 on t10.gridid=t11.gridid and t10.buildingid=t11.buildingid and t10.floor=t11.floor

 需要注意事项:

1)如果inner join 关联条件中包含了buildingid或者gridid或者floor有null的数据,虽然两边都是null的条件下,也是无法关联出来的;

2)针对buildingid如果两边都是null,关联时依然需要关联出来的解决方案请参考:《

 

转载地址:http://pxwvl.baihongyu.com/

你可能感兴趣的文章
神经网络优化(四) - 全连接网络实战(输入手写数字输出识别结果)
查看>>
《重构-改善既有代码的设计》 代码的坏味道(一)
查看>>
RS交叉表自动汇总后百分比列显示错误之解决方案
查看>>
iOS 关于僵尸对象和僵尸指针的那些事儿
查看>>
心悸案
查看>>
MyEclipse设置像visual studio一样的智能提示
查看>>
76. Minimum Window Substring
查看>>
linux挂载根文件系统过程
查看>>
ORA-00600: internal error code, arguments: [kcblasm_1], [103], [], [], [], [], [], []
查看>>
漫游Kafka实战篇之搭建Kafka运行环境(2)
查看>>
基础知识《九》---网络编程
查看>>
美图秀秀滤镜之对比度
查看>>
Leetcode_num3_Same Tree
查看>>
5、JavaScript进阶篇②——函数、事件、内置对象
查看>>
shell 脚本执行日志通用模块
查看>>
C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍
查看>>
Unity中Mesh分解与边缘高亮加上深度检测
查看>>
Java提高篇——静态代码块、构造代码块、构造函数以及Java类初始化顺序
查看>>
spring boot(二):web综合开发
查看>>
人工智能范畴及深度学习主流框架,谷歌 TensorFlow,IBM Watson认知计算领域IntelligentBehavior介绍...
查看>>