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