Rumah >pangkalan data >tutorial mysql >Mengapa Menggunakan SUM() Tanpa GROUP BY Mengembalikan Keputusan Yang Tidak Dijangka?
Memahami Keperluan GROUP BY dengan Fungsi Agregat
Contoh yang diberikan mempamerkan senario yang membingungkan di mana menjumlahkan gaji pekerja tanpa menggunakan GROUP Klausa BY mengakibatkan jadual asal dikembalikan sebagai output. Untuk membongkar misteri ini, kami menyelidiki tujuan dan peranan GROUP BY apabila bekerja dengan fungsi agregat seperti SUM().
GROUP BY, seperti namanya, mengumpulkan baris berdasarkan kriteria yang ditentukan. Pengumpulan ini menjadi sangat penting apabila menggunakan fungsi agregat yang melakukan pengiraan pada kumpulan baris dan bukannya baris individu. Dalam kes kami, fungsi SUM() mengira jumlah Gaji Bulanan untuk setiap ID Pekerja yang unik.
Tanpa menggunakan GROUP BY, pertanyaan akan cuba mengira jumlah semua nilai MonthlySalary tanpa mengumpulkannya mengikut EmployeeID. Ini akan memberikan keputusan yang salah kerana pada asasnya ia akan merumuskan semua gaji dalam jadual, menganggapnya sebagai satu kumpulan besar.
Ambil contoh berikut:
SELECT EmployeeID, SUM(MonthlySalary) FROM Employee;
Hasil pertanyaan ini akan menjadi satu baris dengan EmployeeID sebagai NULL dan jumlah semua gaji. Keputusan ini tidak bermakna kerana ia tidak memberikan maklumat yang diperlukan tentang jumlah gaji khusus pekerja.
Dengan memasukkan GROUP BY dalam pertanyaan, kami memaksa pangkalan data untuk melakukan pengiraan bagi setiap EmployeeID unik, menghasilkan satu yang bermakna output:
SELECT EmployeeID, SUM(MonthlySalary) FROM Employee GROUP BY EmployeeID;
Kini, hasilnya akan terdiri daripada baris individu untuk setiap pekerja, memaparkan masing-masing EmployeeIDs dan jumlah Gaji Bulanan yang sepadan.
Ringkasnya, GROUP BY memastikan fungsi agregat seperti SUM() digunakan pada kumpulan baris tertentu, membolehkan pengagregatan data yang bermakna. Ia memudahkan pengekstrakan cerapan yang bermakna dan menghalang salah tafsir hasil.
Atas ialah kandungan terperinci Mengapa Menggunakan SUM() Tanpa GROUP BY Mengembalikan Keputusan Yang Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!