sql >> Databáze >  >> RDS >> Oracle

Oracle SQL - dotaz na výpočet hodnot z více tabulek

Můžete použít více společných tabulkových výrazů, přičemž každý počítáte samostatně a spojujete dohromady – jen abyste pochopili, co se děje.

SQL Fiddle

Dotaz :

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 

Výsledky :

|       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. Může se kontrolní omezení vztahovat k jiné tabulce? Věštec

  2. Postgres:Definování nejdelší série (ve dnech) na vývojáře

  3. Převod Json na SQL tabulku

  4. Jak donutím Postgres, aby používal konkrétní index?