Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

SQL:Setelah bergabung dengan tabel, fungsi SUM() mengembalikan nilai yang salah

Yang dipermasalahkan adalah produk Cartesian (di mana baris dalam satu tabel dikalikan dengan baris di tabel lainnya). Asumsi yang dibuat oleh pendekatan berikut adalah bahwa setiap proyek memiliki beban kerja dengan karyawan yang ditugaskan (yang semuanya memperhitungkan semua karyawan karena kueri Anda tidak menunjukkan gabungan ke tabel karyawan) dan tugas. Jika tidak demikian, pertimbangkan untuk melakukan gabungan luar versus gabungan dalam.

Idenya adalah untuk melakukan setiap agregasi dalam tabel turunannya sendiri berdasarkan nomor proyek. Kami kemudian dapat menggabungkan setiap tabel turunan dengan nomor proyek untuk mendapatkan hasil yang berarti.

SELECT
p.NAME,
w.workload_sum AS "Total Workload",
e.employee_count AS "Total Employees",
t.task_count AS "Finished Tasks"
from p 
JOIN (select pno, sum(workload) as workload_sum
        from w
       group by pno) w ON (w.pno=p.pnumber)
JOIN (select pno, count(distinct w.essn) as employee_count
        from w
       group by pno) e ON (e.pno=p.pnumber)
JOIN (select pno, count(distinct t.name) as task_count
        from t
       group by pno) t ON (t.pno=p.pnumber)
WHERE t.END_DATE is NOT NULL;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Strategi Oracle Pagination

  2. SQL Query untuk mendapatkan jumlah kata dalam tabel

  3. Pilih TOP N dan BOTTOM N

  4. Jenis objek apa yang dikembalikan oleh Spring Hibernate Template untuk kueri penghitungan di Oracle?

  5. Temukan apakah kolom memiliki batasan unik