2016-08-24 64 views
0

我想爲此使用分析,因爲我有其他幾個相似的統計數據,我想要 報告。這是一個正確使用'分區'的問題嗎?

問:使用Oracle Analytics,我怎樣才能在每個機場只有一行?

with detail_records as 
(select 1 as passenger_id, 'ATL' as airport, 'E4' as gate, 10 as luggage_weight from dual union all 
select 2 as passenger_id, 'ATL' as airport, 'E4' as gate, 25 as luggage_weight from dual union all 
select 2 as passenger_id, 'SFO' as airport, 'E4' as gate, 20 as luggage_weight from dual union all 
select 3 as passenger_id, 'SFO' as airport, 'E4' as gate, 30 as luggage_weight from dual union all 
select 4 as passenger_id, 'SFO' as airport, 'E4' as gate, 40 as luggage_weight from dual 
) 
select airport, 
     count(*) over (partition by airport) as airport_count, 
     sum(luggage_weight) over (partition by airport, gate) as a_g_weight 
from detail_records 
where gate='E4' 

結果

AIRPORT AIRPORT_COUNT A_G_WEIGHT 
ATL  2    35 
ATL  2    35 
SFO  3    90 
SFO  3    90 
SFO  3    90 

預期的效果

Airport Airport_count A_G_WEIGHT 
ATL  2    35 
SFO  3    90 
+1

嘗試'選擇DISTINCT機場,...' –

+1

如果您通過單個門進行過濾,那麼該列的分區不會添加任何內容;如果你通過多個門(或全部)過濾,那麼你將有多個'a_g_weight'值,沒有任何解釋原因。 –

回答

1

正如Wernfried說,你找DISTINCT關鍵字。

既然 「乘客ID」 列沒有關係,並希望避免重複,你必須把它這樣:

with detail_records as 
(select 1 as passenger_id, 'ATL' as airport, 'E4' as gate, 10 as luggage_weight from dual union all 
select 2 as passenger_id, 'ATL' as airport, 'E4' as gate, 25 as luggage_weight from dual union all 
select 2 as passenger_id, 'SFO' as airport, 'E4' as gate, 20 as luggage_weight from dual union all 
select 3 as passenger_id, 'SFO' as airport, 'E4' as gate, 30 as luggage_weight from dual union all 
select 4 as passenger_id, 'SFO' as airport, 'E4' as gate, 40 as luggage_weight from dual 
) 
select distinct airport, 
     count(*) over (partition by airport) as airport_count, 
     sum(luggage_weight) over (partition by airport, gate) as a_g_weight 
from detail_records 
where gate='E4' 
0

使用簡單GROUP BY查詢

select airport, 
     count(*) as airport_count, 
     sum(luggage_weight) as a_g_weight 
from detail_records 
where gate='E4' 
group by airport