Fungsi agregat dalam SQL adalah alat yang berkuasa yang digunakan untuk melakukan pengiraan pada satu set nilai dan mengembalikan satu nilai. Mereka biasanya digunakan bersempena dengan pernyataan SELECT
untuk mendapatkan maklumat statistik dari pangkalan data. Mari kita meneroka setiap fungsi agregat biasa:
SUM : Fungsi ini mengira jumlah jumlah lajur angka. Ia digunakan untuk menambah semua nilai dalam lajur yang ditentukan. Sebagai contoh, untuk mencari jumlah jualan dalam jadual jualan, anda akan menggunakan:
<code class="sql">SELECT SUM(sales_amount) FROM sales;</code>
AVG : Fungsi ini mengira purata lajur angka. Ia sesuai untuk mencari nilai min data, seperti harga purata item yang dijual:
<code class="sql">SELECT AVG(price) FROM products;</code>
Kira : Fungsi ini mengira bilangan baris yang sepadan dengan kriteria yang ditentukan. Ia biasanya digunakan untuk mendapatkan bilangan rekod dalam jadual atau bilangan nilai bukan null dalam lajur:
<code class="sql">SELECT COUNT(*) FROM customers; -- Counts all rows in the customers table SELECT COUNT(email) FROM customers; -- Counts non-null email entries</code>
Min : Fungsi ini mengembalikan nilai terkecil dalam lajur yang ditentukan. Ia berguna untuk mencari nilai minimum, seperti harga terendah dalam senarai produk:
<code class="sql">SELECT MIN(price) FROM products;</code>
Max : Fungsi ini mengembalikan nilai terbesar dalam lajur yang ditentukan. Ia boleh digunakan untuk mencari nilai tertinggi, seperti gaji maksimum dalam jadual pekerja:
<code class="sql">SELECT MAX(salary) FROM employees;</code>
Ya, anda boleh menggabungkan pelbagai fungsi agregat dalam pertanyaan SQL tunggal. Ini sering berguna apabila anda perlu mendapatkan pelbagai statistik dari set data yang sama. Inilah contoh yang menunjukkan cara menggunakan SUM
, AVG
, dan COUNT
dalam satu pertanyaan:
<code class="sql">SELECT SUM(sales_amount) AS total_sales, AVG(sales_amount) AS average_sale, COUNT(*) AS number_of_sales FROM sales;</code>
Dalam contoh ini, pertanyaan mengembalikan tiga statistik yang berbeza mengenai jadual jualan: jumlah jualan, jumlah jualan purata, dan kiraan urus niaga jualan. Dengan menggabungkan fungsi agregat dengan cara ini, anda boleh mengekstrak pelbagai maklumat ringkasan dalam satu perjalanan.
Menggunakan GROUP BY
dengan fungsi agregat membolehkan anda menggunakan fungsi kepada kumpulan baris dalam data anda, dan bukannya ke seluruh dataset. Ini adalah penting untuk menghasilkan laporan ringkasan atau statistik yang dikelompokkan oleh kriteria tertentu. Inilah perbezaannya:
Tanpa kumpulan oleh : Apabila anda menggunakan fungsi agregat tanpa GROUP BY
, fungsi ini digunakan untuk keseluruhan set hasil. Contohnya:
<code class="sql">SELECT AVG(salary) FROM employees;</code>
Pertanyaan ini akan mengira gaji purata di semua pekerja dalam jadual.
Dengan kumpulan oleh : apabila anda menggunakan GROUP BY
, fungsi agregat dikira secara berasingan untuk setiap kumpulan yang ditakrifkan oleh GROUP BY
klausa. Contohnya:
<code class="sql">SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department;</code>
Pertanyaan ini mengira gaji purata bagi setiap jabatan dalam jadual employees
. GROUP BY
klausa kumpulan baris oleh jabatan sebelum memohon fungsi AVG
, yang membolehkan anda melihat statistik khusus jabatan.
Pengendalian nilai NULL
adalah aspek penting dalam bekerja dengan fungsi agregat dalam SQL, kerana nilai NULL
dapat mempengaruhi hasil pengiraan anda. Berikut adalah strategi untuk menguruskan nilai NULL
dengan fungsi agregat yang berbeza:
NULL
. Apabila mengira jumlah atau purata, SQL merawat NULL
seolah -olah baris tidak wujud, jadi anda tidak perlu mengambil tindakan khas untuk mengendalikannya.NULL
dengan menggunakan COUNT(*)
atau COUNT(column_name)
. COUNT(*)
mengira semua baris, termasuk yang mempunyai nilai NULL
, sedangkan COUNT(column_name)
hanya mengira nilai bukan NULL
dalam lajur yang ditentukan.NULL
. Mereka akan mengembalikan nilai minimum atau maksimum di antara nilai-nilai yang tidak NULL
dalam lajur yang ditentukan. Jika anda ingin memasukkan nilai NULL
dalam pengiraan anda, anda boleh menggunakan fungsi COALESCE
atau IFNULL
untuk menggantikan NULL
dengan nilai lalai. Sebagai contoh, untuk mengira semua baris termasuk nilai NULL
dalam lajur tetapi merawat NULL
sebagai sifar untuk SUM
, anda boleh menggunakan:
<code class="sql">SELECT COUNT(*) AS total_rows, SUM(COALESCE(sales_amount, 0)) AS total_sales FROM sales;</code>
Dalam pertanyaan ini, COALESCE
menggantikan mana -mana NULL
sales_amount
dengan 0
sebelum SUM
dikira, yang membolehkan nilai NULL
menyumbang kepada jumlah sifar.
Atas ialah kandungan terperinci Bagaimanakah saya menggunakan fungsi agregat (jumlah, avg, kiraan, min, max) dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!