2012-09-13 39 views
1

我有一個查詢,它給了我一個操作的結果。現在,我想要做的是在當前查詢這個結果分成2個部分,2個獨立的我所擁有的用戶羣...SQL/Oracle加入多個函數

Select Sum(Actions) From 
(
Select 
Count(Create_Dtime) As Actions 
From Player_Tapjoy 
Where 
Trunc(Create_Dtime) = To_Date('2012-sep-12','yyyy-mon-dd') 
Union All 
Select 
Count(Create_Dtime) As Actions 
From Player_aux_pt 
Where Site = 'AppCircle' And 
Trunc(Create_Dtime) = To_Date('2012-sep-12','yyyy-mon-dd') 
); 

兩個表具有player_id標籤。還有另一個名爲player_source的表,其中我有每個player_id的組ID(1-100)。我想通過player_id將當前查詢映射到player_source表,這樣我只能包含特定的group_id(比如1,2,3,4和6)。有什麼建議麼?

,我想在我的第一個查詢來從查詢到包括這些ID:

Select Player_Id From Player_Source S Inner Join Feature_Group_Xref F 
On S.Group_Id=F.Group_Id 
where f.feature_name = 'BC' 

回答

1

既然你希望只包括特定的組ID,和player_source表有組ID,你需要加入player_source表到「主」表 - tapjoy和aux_pt。您必須在UNION的每個組件上執行此操作,因爲您正在彙總結果,並且無法在彙總後過濾單個記錄。您提供了查詢以獲取group_ids,因此內部聯接就是從tapjoy/aux_pt到feature_group_xref所需的全部內容。

這裏的結果:

Select Sum(Actions) From 
(
Select 
Count(t.Create_Dtime) As Actions 
From Player_Tapjoy t inner join player_source s on (t.player_id = s.player_id) 
Inner Join Feature_Group_Xref F On (S.Group_Id=F.Group_Id and f.feature_name = 'BC') 
Where Trunc(t.Create_Dtime) = To_Date('2012-sep-12','yyyy-mon-dd') 
Union All 
Select 
Count(a.Create_Dtime) As Actions 
From Player_aux_pt a inner join player_source s on (a.player_id = s.player_id) 
Inner Join Feature_Group_Xref F On (S.Group_Id=F.Group_Id and f.feature_name = 'BC') 
Where a.Site = 'AppCircle' And 
Trunc(a.Create_Dtime) = To_Date('2012-sep-12','yyyy-mon-dd') 
) 
+0

這偉大的工作,謝謝... ...如果你有時間你能提供一個簡要的解釋,爲什麼你加入,你做了什麼?這樣下一次我不會問一個類似的問題:) – Americo

+0

當然,我添加了一些細節,希望有所幫助! –