Rumah > pangkalan data > tutorial mysql > Bagaimanakah SQL GROUP BY Clause Berfungsi Tanpa Fungsi Agregat?

Bagaimanakah SQL GROUP BY Clause Berfungsi Tanpa Fungsi Agregat?

DDD
Lepaskan: 2024-12-25 22:29:09
asal
996 orang telah melayarinya

How Does SQL's GROUP BY Clause Work Without Aggregate Functions?

Memahami GROUP BY Tanpa Fungsi Agregat

Dalam SQL, pernyataan GROUP BY digunakan untuk mengumpulkan baris dalam jadual berdasarkan lajur yang ditentukan. Apabila menggunakan GROUP BY tanpa fungsi agregat, adalah penting untuk memahami cara ia beroperasi dan syarat yang diperlukan.

Pertimbangkan contoh berikut:

SELECT ename, sal
FROM emp
GROUP BY ename, sal;
Salin selepas log masuk

Pertanyaan ini tidak akan mengembalikan sebarang baris kerana ia melanggar peraturan GROUP BY tanpa agregat fungsi:

  • Bilangan Lajur dalam Senarai PILIH: Bilangan lajur dalam senarai PILIH mestilah sama dengan bilangan lajur dalam klausa KUMPULAN OLEH.

Dalam kes ini, senarai SELECT mempunyai dua lajur (ename, sal), tetapi klausa GROUP BY mempunyai tiga (ename, sal, sal). Untuk membetulkan ini, alih keluar satu lajur sal daripada klausa GROUP BY:

SELECT ename, sal
FROM emp
GROUP BY ename;
Salin selepas log masuk
  • Bukan GROUP BY Lajur dalam Senarai PILIH: Lajur Bukan GROUP BY hanya boleh disertakan dalam senarai SELECT jika ia adalah pemalar atau muncul sebagai argumen untuk diagregatkan fungsi.

Apabila anda memasukkan sal dalam senarai PILIH, ia menjadi lajur bukan KUMPULAN OLEH kerana ia tiada dalam klausa KUMPULAN OLEH. Memandangkan ia bukan fungsi agregat, ia mencetuskan ralat ORA-00979.

Membetulkan ini memerlukan sama ada menambah sal pada klausa GROUP BY atau menggunakan fungsi agregat padanya:

-- Add sal to the GROUP BY clause
SELECT ename, MIN(sal), MAX(sal)
FROM emp
GROUP BY ename, sal;

-- Use an aggregate function on sal
SELECT ename, SUM(sal)
FROM emp
GROUP BY ename;
Salin selepas log masuk

Memikirkan Di Sebalik Peraturan

Operasi GROUP BY menggabungkan baris dengan nilai yang sama dalam lajur GROUP BY, menghasilkan satu baris untuk setiap set nilai yang unik. Memasukkan lajur bukan KUMPULAN OLEH dalam senarai PILIH tanpa fungsi agregat mewujudkan kesamaran kerana tidak jelas cara memilih nilai perwakilan untuk setiap kumpulan.

Sebagai contoh, jika anda mempunyai jadual dengan lajur Nama dan Umur dan anda KUMPULAN MENGIKUT Nama, umur manakah yang perlu dipaparkan dalam keputusan untuk setiap nama? Dengan menggunakan fungsi agregat seperti MIN, MAX atau SUM, anda dengan jelas menyatakan cara mengendalikan lajur tersebut.

Atas ialah kandungan terperinci Bagaimanakah SQL GROUP BY Clause Berfungsi Tanpa Fungsi Agregat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan