Rumah > pangkalan data > tutorial mysql > Bagaimanakah Fungsi Agregat Berfungsi dengan Klausa GROUP BY dalam SQL?

Bagaimanakah Fungsi Agregat Berfungsi dengan Klausa GROUP BY dalam SQL?

DDD
Lepaskan: 2025-01-13 08:31:44
asal
732 orang telah melayarinya

How Do Aggregate Functions Work with the GROUP BY Clause in SQL?

Memahami SQL GROUP BY dan Fungsi Agregat

Klausa

SQL GROUP BY mengelompokkan baris dengan cekap berdasarkan lajur yang ditentukan. Walau bagaimanapun, kekeliruan sering timbul apabila memilih lajur yang tidak termasuk dalam kumpulan.

Pertimbangkan pertanyaan ini:

<code class="language-sql">SELECT *
FROM order_details
GROUP BY order_no;</code>
Salin selepas log masuk

Pertanyaan ini akan gagal dalam banyak sistem pangkalan data (seperti Oracle) kerana ia cuba memilih semua lajur (*) semasa mengumpulkan hanya dengan order_no. Ini melanggar peraturan bahawa lajur bukan agregat mesti menjadi sebahagian daripada klausa GROUP BY.

Penyelesaian? Sertakan lajur bukan agregat dalam klausa GROUP BY bersebelahan dengan fungsi agregat. Contohnya:

<code class="language-sql">SELECT order_no, SUM(order_price)
FROM order_details
GROUP BY order_no;</code>
Salin selepas log masuk

Di sini, order_no berada dalam kedua-dua klausa SELECT dan GROUP BY, manakala SUM(order_price) melakukan pengagregatan.

Menjawab soalan utama:

Bolehkah fungsi agregat mengakses semua lajur dalam kumpulan?

Ya, fungsi agregat seperti SUM() beroperasi merentas semua baris dalam setiap kumpulan, mengira nilai agregat untuk lajur yang ditentukan. Dalam contoh di atas, SUM(order_price) menjumlahkan harga untuk setiap order_no.

Walau bagaimanapun, mengakses lajur tidak teragregat tanpa memasukkannya dalam klausa GROUP BY membawa kepada ralat. Pangkalan data tidak dapat menentukan nilai yang hendak dipilih daripada berbilang baris dalam kumpulan.

Oleh itu, sentiasa masukkan semua lajur bukan agregat dalam klausa GROUP BY atau hadkan klausa SELECT kepada fungsi agregat sahaja apabila menggunakan GROUP BY.

Atas ialah kandungan terperinci Bagaimanakah Fungsi Agregat Berfungsi dengan Klausa GROUP BY dalam SQL?. 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