Kumpulkan Dengan tanpa Fungsi Agregat: Memahami Mekanisme
GROUP BY ialah klausa SQL yang berkuasa yang membolehkan kami mengumpulkan dan meringkaskan data berdasarkan lajur yang ditentukan. Walaupun fungsi agregat seperti SUM, COUNT dan AVG biasanya digunakan dengan GROUP BY, GROUP BY juga boleh digunakan tanpa fungsi agregat. Memahami konsep ini adalah penting untuk memanfaatkan keupayaan penuh GROUP BY.
Apabila menggunakan GROUP BY tanpa fungsi agregat, adalah penting untuk memahami bahawa setiap kumpulan akan menghasilkan satu baris dalam output. Nilai untuk lajur yang tidak disertakan dalam klausa GROUP BY akan diduplikasi dengan berkesan untuk setiap baris dalam kumpulan.
Pertimbangkan jadual EMP:
ename | sal -------+------ Smith | 1000 Jones | 1200 Davis | 1100 Wilson | 1200 Brown | 1300
Senario 1: KUMPULAN Tidak Sah BY Expression
SELECT ename, sal FROM emp GROUP BY ename, sal;
Pertanyaan ini gagal dengan ralat ORA-00979 kerana sal tidak termasuk dalam klausa GROUP BY. Setiap baris akan mempunyai nilai yang berbeza untuk sal, menghasilkan berbilang baris untuk setiap pekerja.
Senario 2: KUMPULAN YANG SAH MENGIKUT Ungkapan
SELECT ename, sal FROM emp GROUP BY ename;
Pertanyaan ini sah kerana ia mengumpulkan baris mengikut nama, yang memastikan baris unik untuk setiap pekerja. Nilai untuk sal akan diduplikasi untuk setiap baris kepunyaan pekerja yang sama.
Senario 3: KUMPULAN TIDAK SAH MENGIKUT Ungkapan
SELECT ename, sal FROM emp GROUP BY sal;
Pertanyaan ini tidak sah kerana ia cuba mengumpulkan baris mengikut sal, yang akan menghasilkan berbilang baris untuk pekerja yang sama gaji.
Senario 4: Tidak Sah KUMPULAN MENGIKUT Ungkapan
SELECT empno, ename, sal FROM emp GROUP BY sal, ename;
Pertanyaan ini tidak sah kerana susunan lajur dalam klausa GROUP BY mesti sepadan dengan susunan lajur dalam klausa SELECT.
Senario 5: Sah GROUP BY Expression
SELECT empno, ename, sal FROM emp GROUP BY empno, ename, sal;
Pertanyaan ini sah kerana susunan lajur dalam klausa GROUP BY sepadan dengan susunan lajur dalam klausa SELECT. Hasilnya akan mengandungi satu baris untuk setiap gabungan berbeza empno, ename dan sal.
Ringkasnya, GROUP BY tanpa fungsi agregat mengalih keluar pendua daripada lajur yang ditentukan dengan mengumpulkan baris yang berkongsi nilai yang sama. Walau bagaimanapun, semua lajur yang tidak disertakan dalam klausa GROUP BY akan mempunyai nilai pendua dalam baris output.
Atas ialah kandungan terperinci Bagaimanakah GROUP BY Berfungsi Tanpa Fungsi Agregat dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!