Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengelakkan Ralat Apabila Menggunakan GROUP BY dan Fungsi Agregat dalam SQL?
SQL GROUP BY dan Fungsi Agregat: Perangkap Biasa
KlausaSQL GROUP BY
berkuasa untuk meringkaskan data, tetapi ia sering menyebabkan kekeliruan, terutamanya berkenaan lajur yang boleh muncul dalam pernyataan SELECT
.
Kesilapan yang kerap melibatkan cubaan memilih lajur tidak teragregat tanpa memasukkannya dalam klausa GROUP BY
. Contohnya:
<code class="language-sql">SELECT * FROM order_details GROUP BY order_no;</code>
Pertanyaan ini akan gagal. Apabila menggunakan GROUP BY
, mana-mana lajur yang tidak tertakluk kepada fungsi agregat (seperti SUM
, COUNT
, AVG
, MIN
, MAX
) mesti disertakan dalam GROUP BY
senarai.
Untuk membetulkan ini, sama ada masukkan semua lajur bukan agregat dalam klausa GROUP BY
:
<code class="language-sql">SELECT order_no, order_price FROM order_details GROUP BY order_no, order_price;</code>
Atau, gunakan fungsi agregat untuk meringkaskan data bagi setiap kumpulan:
<code class="language-sql">SELECT order_no, SUM(order_price) AS total_price FROM order_details GROUP BY order_no;</code>
Fungsi agregat mengira satu nilai bagi setiap kumpulan, membolehkan anda mendapatkan maklumat diringkaskan walaupun anda tidak menyenaraikan setiap lajur dalam klausa GROUP BY
. Ini adalah kunci untuk mengelakkan ralat dan mendapatkan hasil yang bermakna daripada data terkumpul. Prinsip teras ialah: semua lajur dalam senarai SELECT
mesti sama ada diagregatkan atau hadir dalam klausa GROUP BY
.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelakkan Ralat Apabila Menggunakan GROUP BY dan Fungsi Agregat dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!