Hive 不支持 intersect 的解决办法

2024-05-25 20:38

本文主要是介绍Hive 不支持 intersect 的解决办法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题

有一个SQL语句要在hive里执行但是hive不支持intersect,所以要使用其他方法代替

思路

intersect就是取交集,可以使用inner join进行连接然后取其中一列并去重

innerjoin.png

原SQL

select  s_store_name,sum(ss_net_profit)from store_sales,date_dim,store,(select ca_zipfrom (SELECT substr(ca_zip,1,5) ca_zipFROM customer_addressWHERE substr(ca_zip,1,5) IN ('27385','58049','58200','16808','21360','32961','18586','79307','15492')intersectselect ca_zipfrom (SELECT substr(ca_zip,1,5) ca_zip,count(*) cntFROM customer_address, customerWHERE ca_address_sk = c_current_addr_sk andc_preferred_cust_flag='Y'group by ca_ziphaving count(*) > 10)A1)A2) V1where ss_store_sk = s_store_skand ss_sold_date_sk = d_date_skand d_qoy = 1 and d_year = 2002and (substr(s_zip,1,2) = substr(V1.ca_zip,1,2))group by s_store_nameorder by s_store_namelimit 100;

更改后的HQL

代码没有格式化,如要测试可以先格式化一下

SELECT s_store_name ,sum(ss_net_profit)
FROM store_sales ,date_dim ,store,(  (SELECT DISTINCT A.ca_zip
FROM ((SELECT substr(ca_zip,1,5) ca_zipFROM customer_addressWHERE substr(ca_zip,1,5) IN ('27385','58049','58200','16808','21360','32961','18586','79307','15492'))AINNER JOIN(SELECT substr(ca_zip,1,5) ca_zip,count(*) cntFROM customer_address,customerWHERE ca_address_sk = c_current_addr_skAND c_preferred_cust_flag='Y'GROUP BY ca_zipHAVING count(*) > 10) B on(A.ca_zip=B.ca_zip) ))C  )  
WHERE ss_store_sk = s_store_skAND ss_sold_date_sk = d_date_skAND d_qoy = 1AND d_year = 2002AND (substr(s_zip,1,2) = substr(C.ca_zip,1,2))
GROUP BY s_store_name
ORDER BY s_store_name LIMIT 100;

欢迎点赞

这篇关于Hive 不支持 intersect 的解决办法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1002573

相关文章

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

java如何通过Kerberos认证方式连接hive

《java如何通过Kerberos认证方式连接hive》该文主要介绍了如何在数据源管理功能中适配不同数据源(如MySQL、PostgreSQL和Hive),特别是如何在SpringBoot3框架下通过... 目录Java实现Kerberos认证主要方法依赖示例续期连接hive遇到的问题分析解决方式扩展思考总

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

SQL Server数据库磁盘满了的解决办法

《SQLServer数据库磁盘满了的解决办法》系统再正常运行,我还在操作中,突然发现接口报错,后续所有接口都报错了,一查日志发现说是数据库磁盘满了,所以本文记录了SQLServer数据库磁盘满了的解... 目录问题解决方法删除数据库日志设置数据库日志大小问题今http://www.chinasem.cn天发

Solr 使用Facet分组过程中与分词的矛盾解决办法

对于一般查询而言  ,  分词和存储都是必要的  .  比如  CPU  类型  ”Intel  酷睿  2  双核  P7570”,  拆分成  ”Intel”,”  酷睿  ”,”P7570”  这样一些关键字并分别索引  ,  可能提供更好的搜索体验  .  但是如果将  CPU  作为 Facet  字段  ,  最好不进行分词  .  这样就造成了矛盾  ,  解决方法

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

Anaconda 中遇到CondaHTTPError: HTTP 404 NOT FOUND for url的问题及解决办法

最近在跑一个开源项目遇到了以下问题,查了很多资料都大(抄)同(来)小(抄)异(去)的,解决不了根本问题,费了很大的劲终于得以解决,记录如下: 1、问题及过程: (myenv) D:\Workspace\python\XXXXX>conda install python=3.6.13 Solving environment: done.....Proceed ([y]/n)? yDownloa

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

sqlite不支持中文排序,采用java排序

方式一 不支持含有重复字段进行排序 /*** sqlite不支持中文排序,改用java排序* 根据指定的对象属性字段,排序对象集合,顺序* @param list* @param field* @return*/public static List sortListByField(List<?> list,String field){List temp = new ArrayList(

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬