Hive with as 语句


公用表表达式(CTE)是从WITH子句中指定的简单查询派生的临时结果集(会把查询的表数据放到内存中,供其他查询随时使用)
该子句紧跟在SELECT或INSERT关键字之前。
CTE仅在单个语句的执行范围内定义。
可以在Hive SELECT,INSERT,CREATE TABLE AS SELECT 或 CREATE VIEW AS SELECT 语句中使用一个或多个CTE 。

  

一个 with as 语句  

--1
with cte_order as 
(
  select store_id,channel,paid_date,order_id,gmv
  from testdb.order_line
  where channel in ('SNG','JDDJ')
)
--with as 语句不能加分号 ;

select store_id,order_id,paid_date,order_id,gmv
from cte_order where channel='SNG'
union all
select store_id,order_id,paid_date,order_id,gmv
from cte_order where channel='JDDJ'
;

 

 

多个 with as 语句  

--2
with cte_SNG as (
select store_id,channel,paid_date,order_id,gmv
from testdb.order_line
where channel = 'SNG'
)
--多个 with as 语句 用逗号, 隔开
, cte_JDDJ as (
select store_id,channel,paid_date,order_id,gmv
from testdb.order_line
where channel = 'JDDJ'
)

select store_id,order_id,paid_date,order_id,gmv
from cte_SNG union all
select store_id,order_id,paid_date,order_id,gmv
from cte_JDDJ
;

 

 

内嵌 union 

--3
with cte_order as 
(
  select store_id,channel,paid_date,order_id,gmv
  from testdb.order_line
  where channel = 'SNG'
union all
  select store_id,channel,paid_date,order_id,gmv
  from testdb.order_line
  where channel = 'JDDJ'
)

select * from cte_order ;

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM