0

次のクエリでは、1 行の結果が得られます

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 ='Try     BC') 
     Where Trunc(t.Create_Dtime) = To_Date('2012-sep-17','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 =     'TryBC')
    Where A.Site = 'AppCircle' 
    And Trunc(A.Create_Dtime) = To_Date('2012-sep-17','yyyy-mon-dd')
 )

ここで、結果に制約を追加したいと思います。2012 年 9 月 12 日より前にアカウントを作成したユーザーのみ。

私のデータベース言語: を持つユーザーのみtrunc(create_dtime) < To_Date('2012-sep-12','yyyy-mon-dd')。このtrunc(create_dtime)日付はplayerテーブルから取得されます。

player別の内部結合を使用して、このテーブルを現在のテーブルにマップできますか?

4

1 に答える 1

1

あなたの要件は完全に明確ではなく、明らかに私はあなたのデータモデルについて推測しなければなりませんでした. Playerテーブルには 1 つの行があると想定していますPlayer_Id。つまり、クエリしているテーブルへの外部キー関係の主キーの終わりです。

内部クエリを変更して、集計ではなく一連の行のみを返すようにしました。次に、インライン ビュー (エイリアスq) をPlayerテーブルに結合し、SUM() ではなく COUNT() を使用して図を取得します。

Select count(Player_Id) From
(
    Select
        T.Player_Id
    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 ='Try     BC') 
     Where Trunc(t.Create_Dtime) = To_Date('2012-sep-17','yyyy-mon-dd')
     Union All
     Select 
         A.Player_Id 
     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 =     'TryBC')
    Where A.Site = 'AppCircle' 
    And Trunc(A.Create_Dtime) = To_Date('2012-sep-17','yyyy-mon-dd')
 ) q
 join player p
      on (p.Player_Id = q.Player_Id)
 where Trunc(p.Create_Dtime) < To_Date('2012-sep-12','yyyy-mon-dd')

上で述べた理由により、これはあなたが必要とする正確な結果ではないかもしれませんが、正しい方向に向けられるはずです。

于 2012-09-19T09:08:18.370 に答える