2012-04-29 15 views
0

が可能な重複:
Need help for my SQL query集計データ

まあ私もこれ以前を掲載しているかもしれないが、私の要件は少しも変わって、とても助けてください私はこの1つで

マイデータベース構造:

ATTActivityテーブル)

  • Act_ID(PK)
  • Assigned_To_ID(FK、Emp_ID参照)
  • PROJECT_ID(FKは、Project_IDを参照(0123)
  • ステータス(New, OnHold, Cancel, Closedすることができる)

Product_Table

  • PRODUCT_ID(PK)
  • PRODUCT_NAME

Project_Table

  • PROJECT_ID(PK)
  • PROJECT_NAME

EMPLOYEE_TABLE

  • Emp_IDに(PK)
  • F_NAME。

    をEmp_Product_Project_Mapping

(この表は、基本的にどの製品とどのプロジェクトに割り当てられている従業員マッピングします。重複エントリがEmp_IDFK(FKがEmp_IDにPKを参照)

  • Product_IDFK(FK PRODUCT_ID PKを参照)
    • )1人の従業員が複数のプロジェクトや製品に割り当てることができることをマップするために、すべての3列に許可されています
    • Project_IDFK

    制約(FKはPROJECT_ID PKを参照)

      つのプロジェクトで- >複数の従業員が
    • 1従業員の作業することができます - 時間Statusの任意の時点で>複数のアクティビティを割り当てることができます(Act_ID
    • をそれらに与えられた値のいずれかとすることができます。
    • 任意の時点で、アクティビティを1製品と1プロジェクトに割り当てることができます。

    今私のSQLクエリで私が何をしたいのかは、負荷チェックです::

    Act_IDによって表される)の活動が従業員に割り当てられているプロジェクト(ATT_TableProject_ID)のために、Assigned_To_IDで表され、製品(Product_IDATT_table)と特定のステータス。私は出力に私のSQLクエリからの5つの値が必要です。製品の従業員

  • 名の

    1. 名を
    2. ステータスが新規またはインプロセスのいずれかである(2)その製品のために割り当てられた総活動の
    3. 数(ここでは、Product(2)に関連するすべてのアクティビティをカウントしています。割り当てられているものはありません。Employee(1)のものではありません。
    4. ここで、Employee(in 1)が割り当てられているアクティビティの数が必要です((3)から得られた合計数のうち)。私は自分自身を明確にしたいと願っています。 3番目には、製品に割り当てられた活動全体(2で)でした。第4回の活動では、第3回の私の結果から、第1回の従業員に割り当てられました。
    5. ロード。それは=(3の結果)/(4の結果)* 100((3の結果)は4の結果の4より大きい)より明らかです。

    今あるかもしれません。条件従業員がE1が製品P1、P2で作業しているとします。だから私のテーブル出力は3、4、5、その製品(P1またはP2)のための活動に対応する値を持つことになる

    はこの1つで私を助けてください、この::だからここ

    1 2  3 4  5 
    E1 P1  
    E1 P2 
    

    のように見えるだろう。 MSaccessデータベースの使用。 ありがとう...

  • +0

    ちょうどどこ請求書を送付する方法を教えてください –

    +0

    これは私の以前の投稿と多少関連しています。これは編集された質問の一種です。リンクhttp://stackoverflow.com/questions/10352750/need-help-for-my-sql-query/10353148#comment13370080_10353148を参照してください。 –

    答えて

    1

    2つの独立した方法でデータをグループ化したいので、1つのGROUP BY句でデータをグループ化することはできません。サブクエリを使用して各製品のアクティビティの合計数をカウントする必要があります。私はそれが親でGROUP BYで1つのGROUP BYサブクエリを混合よりも理解しやすいと思うので、ここで私はまた、これらの製品の各従業員の活動をカウントするサブクエリを使用しています:

    SELECT 
        Employee_Table.F_Name, 
        Product_Table.Product_Name, 
        AllActivities.Count, 
        EmployeeActivities.Count, 
        EmployeeActivities.Count/AllActivities.Count AS Load 
    FROM 
        Employee_Table, Product_Table 
        INNER JOIN (
        SELECT Product_ID, COUNT(*) AS Count 
        FROM ATT 
        GROUP BY Product_ID 
    ) AS AllActivities ON 
        AllActivities.Product_ID = Product_Table.Product_ID 
        INNER JOIN (
        SELECT Assigned_To_ID, Product_ID, COUNT(*) AS Count 
        FROM ATT 
        GROUP BY Assigned_To_ID, Product_ID 
    ) AS EmployeeActivities ON 
         EmployeeActivities.Assigned_To_ID = Employee_Table.Emp_ID 
        AND EmployeeActivities.Product_ID  = Product_Table.Product_ID 
    
    +0

    eggyal ..あなたの返事をありがとう。私gt gtのポイント。しかし、それは私にFROM句にエラーを与えます。 Employee_Tableの後にJOINの部分が必要です。私はデータベースとしてMSACCESSを使用しています。 –

    +0

    @ user1230183:私はAccessに精通しているわけではありません。質問には[tag:mysql](完全に異なるデータベースシステム)というタグが付けられています。しかし、修正された答えがあなたのために今働くかもしれないと思いますか? – eggyal

    +0

    ありがとう。私はあなたの努力に感謝します。そして私の間違いは、私はMysqlでそれをタグ付けしました。しかし、それは私にFrom節でエラーを与えています。 INNER JOIN Product_Tableという行の隣にあるInner joinに移動します。もう一度ありがとう –