2012-09-08 12 views
6

私は以下の2つのクエリーを持っています。どちらも同じ「プレイヤー」テーブルから供給されています。私は関連するパーセンテージを得るためにクエリ1でクエリ1を分割したい。フォーラムでの投稿だけでなく、より詳細なSQLクエリには比較的新しいですが、これを組み合わせて関連するパーセンテージの結果を得る方法についての提案があれば教えてください。SQL - 2つの結果を分割する

Select 
    sysdate,sum(Count(init_dtime)) 
From Player p 
Where 
    Trunc(Init_Dtime) > Trunc(Sysdate) - 7 
    And Trunc(Create_Dtime) >= To_Date('2012-mar-01','yyyy-mon-dd') 
    and trunc(create_dtime) < to_date('2015-sep-9','yyyy-mon-dd') 
Group By Trunc(Init_Dtime) 
Order By Trunc(Init_Dtime) Asc 
Select 
    Sum(Count(Create_Dtime)) 
From Player P 
where 
    Trunc(Create_Dtime) >= To_Date('2012-mar-01','yyyy-mon-dd') 
    And Trunc(Create_Dtime) < To_Date('2015-sep-9','yyyy-mon-dd') 
Group By Trunc(create_Dtime) 
Order By Trunc(create_Dtime) Asc 
+1

あなたはすでに私ドンなぜなら私を驚かせる2つの答えを、持っている

select player_id, count(…) from … where … group by player_id 

EDIT:次に、あなたはgroup by player_idselectではplayer_idを持っているでしょうと言うでしょう質問を理解していない。プレーヤーごとに1つの番号または番号が必要ですか?回答があなたの望むものでない場合は、元のデータセットをプレーヤーテーブルから転記して、予想される結果セットとその変換の説明を試してみてください。 –

+0

@Rob van Wijk - 明快さが欠けて申し訳ありません。私はすべての選手を1つにまとめようとしています。ここで重要なのは、1)特定のプレーヤーがアカウントを作成した日付である「create_dtime」と2)特定のプレーヤーがアカウントを作成した最新の日付であるinit d_timeです。プレーヤーはログオンしています。特定の日付範囲内のすべてのプレイヤーについて、質問2(アカウントを作成したユーザーの合計)でクエリ1(過去7日間のアクティブなすべてのプレイヤー、3/1/12の後にアカウントを作成したユーザーの場合) 12月3日以降) – Americo

答えて

4

あなたはちょうどあなたが本当に何かによってグループ化されていないとして、SQL文で

select sysdate, 
     count((init_dtime))/sum((Create_Dtime)) * 100 as percentage 
    from Player p 
where Trunc(Init_Dtime) > Trunc(Sysdate) - 7 
    and Trunc(Create_Dtime) >= To_Date('2012-mar-01','yyyy-mon-dd') 
    and trunc(create_dtime) < to_date('2015-sep-9','yyyy-mon-dd') 
    order by percentage asc 

group byが必要とされていないと言うことができます。 group byは、プレーヤーなどの割合が必要な場合などに便利です。 where句が異なる場合 :

select sysdate, 
     (
      (select count((init_dtime)) 
      from player p 
      where trunc(Init_Dtime) > trunc(Sysdate) - 7 
       and Trunc(Create_Dtime) >= To_Date('2012-mar-01','yyyy-mon-dd') 
       and trunc(create_dtime) < to_date('2015-sep-9','yyyy-mon-dd')) 
      /
      (select count((Create_Dtime)) 
       from player P 
      where trunc(Create_Dtime) >= To_Date('2012-mar-01','yyyy-mon-dd') 
       and trunc(Create_Dtime) < To_Date('2015-sep-9','yyyy-mon-dd')) 
     ) * 100 as percentage 
from dual 
+0

彼らは異なった 'WHERE'節を持っていますが、 –

+0

マイク - 正確に..電子メールはプレーヤーテーブルから供給されていますが、2つのクエリーは異なる条件で構成されています。それを自分で分割するのですが、それはどこで楽しいですか?このフォーラムを使って私のオートメーションを試してみることにしました。 – Americo

+0

@MichaelBerkowskiそれに気付かなかった。答えを更新します。 – Nivas

関連する問題