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 ;

 

posted @ 2020-04-29 23:53  茗::流  阅读(6463)  评论(0编辑  收藏  举报
如有雷同,纯属参考。如有侵犯你的版权,请联系我。