sql >> データベース >  >> RDS >> Oracle

OracleSQL-複数のテーブルから値を計算するためのクエリ

    何が起こっているのかを理解するためだけに、複数の一般的なテーブル式を使用して、それぞれを個別に計算し、結合することができます。

    SQLフィドル

    クエリ

    WITH aud(manager_email,Total_audits) AS
      (SELECT manager_email,
        SUM (
        CASE
          WHEN audit_eligible = 'Y'
          THEN audits_required
        END )
      FROM REQUIRED_AUDITS
      GROUP BY manager_email
      ),  --Total_audits
    
      scores(manager_email,Audits_Performed) AS
      (SELECT manager_email,
        COUNT ( ID )
      FROM SCORE_ENTRY s
      GROUP BY manager_email
      )  --Audits_Performed
    
    SELECT h.manager_email manager,
      a.Total_audits,
      s.Audits_Performed,
      100 * s.Audits_Performed / a.Total_audits percentage_complete
    FROM HR h
    LEFT OUTER JOIN aud a
    ON h.manager_email = a.manager_email
    LEFT OUTER JOIN scores s
    ON h.manager_email = s.manager_email
    ORDER BY 2 DESC NULLS LAST 
    

    結果

    |       MANAGER | TOTAL_AUDITS | AUDITS_PERFORMED | PERCENTAGE_COMPLETE |
    |---------------|--------------|------------------|---------------------|
    |  [email protected] |           10 |                1 |                  10 |
    | [email protected] |            9 |                2 |   22.22222222222222 |
    | [email protected] |       (null) |           (null) |              (null) |
    |  [email protected] |       (null) |           (null) |              (null) |
    | [email protected] |       (null) |           (null) |              (null) |
    


    1. 結合によるSQL更新

    2. JavaでPreparedStatementを使用して動的な名前テーブルを作成します

    3. Rails-MySQLエラー-初期化されていない定数MysqlCompat::MysqlRes

    4. BEFORE INSERTトリガーは、重複キー更新クエリの挿入のすべての行に対して実行されますか