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

相关文章

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

MySQL错误代码2058和2059的解决办法

《MySQL错误代码2058和2059的解决办法》:本文主要介绍MySQL错误代码2058和2059的解决办法,2058和2059的错误码核心都是你用的客户端工具和mysql版本的密码插件不匹配,... 目录1. 前置理解2.报错现象3.解决办法(敲重点!!!)1. php前置理解2058和2059的错误

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总

关于Docker Desktop的WSL报错问题解决办法

《关于DockerDesktop的WSL报错问题解决办法》:本文主要介绍关于DockerDesktop的WSL报错问题解决办法的相关资料,排查发现是因清理%temp%文件夹误删关键WSL文件,... 目录发现问题排查过程:解决方法其实很简单:重装之后再看就能够查到了:最后分享几个排查这类问题的小www.cp

电脑开机提示krpt.dll丢失怎么解决? krpt.dll文件缺失的多种解决办法

《电脑开机提示krpt.dll丢失怎么解决?krpt.dll文件缺失的多种解决办法》krpt.dll是Windows操作系统中的一个动态链接库文件,它对于系统的正常运行起着重要的作用,本文将详细介绍... 在使用 Windows 操作系统的过程中,用户有时会遇到各种错误提示,其中“找不到 krpt.dll”

Pycharm安装报错:Cannot detect a launch configuration解决办法

《Pycharm安装报错:Cannotdetectalaunchconfiguration解决办法》本文主要介绍了Pycharm安装报错:Cannotdetectalaunchconfigur... 本文主要介绍了Pycharm安装报错:Cannot detect a launch configuratio