Rumah > pangkalan data > tutorial mysql > Bagaimanakah anda menggunakan fungsi agregat dalam MySQL (mis., Kira, SUM, AVG, MIN, MAX)?

Bagaimanakah anda menggunakan fungsi agregat dalam MySQL (mis., Kira, SUM, AVG, MIN, MAX)?

Emily Anne Brown
Lepaskan: 2025-03-19 13:24:28
asal
880 orang telah melayarinya

Bagaimana anda menggunakan fungsi agregat dalam MySQL (misalnya, kiraan, jumlah, avg, min, max)?

Fungsi agregat dalam MySQL digunakan untuk melakukan pengiraan pada satu set nilai dan mengembalikan satu nilai. Inilah cara menggunakan fungsi agregat yang paling biasa:

  1. Kiraan () : Fungsi ini mengembalikan bilangan baris yang sepadan dengan keadaan yang ditentukan. Ia boleh mengira semua baris atau hanya baris di mana ungkapan tidak batal.

     <code class="sql">SELECT COUNT(*) FROM employees; SELECT COUNT(employee_id) FROM employees WHERE department = 'IT';</code>
    Salin selepas log masuk
  2. SUM () : Fungsi ini mengira jumlah jumlah lajur angka. Ia mengabaikan nilai null.

     <code class="sql">SELECT SUM(salary) FROM employees WHERE department = 'Sales';</code>
    Salin selepas log masuk
  3. AVG () : Fungsi ini mengira purata lajur angka. Ia juga mengabaikan nilai null.

     <code class="sql">SELECT AVG(salary) FROM employees WHERE department = 'Marketing';</code>
    Salin selepas log masuk
  4. Min () : Fungsi ini mengembalikan nilai terkecil dalam lajur yang ditentukan.

     <code class="sql">SELECT MIN(salary) FROM employees;</code>
    Salin selepas log masuk
  5. Max () : Fungsi ini mengembalikan nilai terbesar dalam lajur yang ditentukan.

     <code class="sql">SELECT MAX(salary) FROM employees;</code>
    Salin selepas log masuk

Bolehkah anda menerangkan cara menggunakan Kumpulan dengan klausa dengan fungsi agregat di MySQL?

Klausa GROUP BY digunakan bersempena dengan fungsi agregat kepada baris kumpulan yang mempunyai nilai yang sama dalam lajur tertentu ke dalam baris ringkasan. Inilah cara anda boleh menggunakannya:

 <code class="sql">SELECT department, COUNT(*) as employee_count, AVG(salary) as avg_salary FROM employees GROUP BY department;</code>
Salin selepas log masuk

Dalam contoh ini, baris dalam jadual employees dikelompokkan oleh lajur department . Fungsi COUNT(*) mengira bilangan pekerja di setiap jabatan, dan AVG(salary) mengira gaji purata dalam setiap jabatan.

Mata Utama untuk Diingati:

  • Anda mesti memasukkan semua lajur yang tidak diagihkan dalam GROUP BY klausa.
  • Klausa GROUP BY biasanya digunakan apabila anda ingin menggunakan fungsi agregat untuk dikumpulkan data.

Apakah beberapa kesilapan biasa untuk dielakkan apabila menggunakan fungsi agregat di MySQL?

Semasa bekerja dengan fungsi agregat di MySQL, penting untuk mengelakkan kesilapan biasa berikut:

  1. Lupa untuk menggunakan kumpulan oleh : Jika anda memasukkan lajur yang tidak diagihkan dalam pernyataan pilih anda bersama-sama dengan fungsi agregat, anda perlu menggunakan GROUP BY untuk lajur tersebut. Gagal berbuat demikian akan mengakibatkan kesilapan.

     <code class="sql">-- Incorrect SELECT department, COUNT(*) FROM employees; -- Correct SELECT department, COUNT(*) FROM employees GROUP BY department;</code>
    Salin selepas log masuk
  2. Campuran lajur agregat dan bukan agregat tanpa kumpulan oleh : Apabila mencampurkan lajur agregat dan bukan agregat dalam pernyataan pilih, pastikan anda menggunakan GROUP BY untuk mengelakkan kesilapan atau hasil yang tidak dijangka.
  3. Mengabaikan nilai null : Ketahui bahawa fungsi SUM dan AVG mengabaikan nilai NULL . Jika nilai NULL adalah penting, anda mungkin perlu mengendalikannya secara berasingan.
  4. Menggunakan fungsi agregat pada data bukan angka : Fungsi seperti SUM dan AVG dimaksudkan untuk data angka. Menggunakannya pada jenis data bukan angka (contohnya, rentetan) akan mengakibatkan kesilapan atau keputusan yang tidak dijangka.
  5. Kira-kira salah faham (col_name) : COUNT(col_name) mengira nilai bukan null dalam lajur yang ditentukan, sedangkan COUNT(*) mengira semua baris, termasuk mereka yang mempunyai nilai null dalam lajur lain.

Bagaimanakah saya dapat mengoptimumkan pertanyaan yang menggunakan fungsi agregat di MySQL untuk prestasi yang lebih baik?

Mengoptimumkan pertanyaan dengan fungsi agregat dapat meningkatkan prestasi dengan ketara. Berikut adalah beberapa strategi:

  1. Gunakan indeks : Pastikan lajur yang terlibat dalam WHERE , GROUP BY , dan ORDER BY klausa diindeks. Ini boleh mempercepatkan proses pengagregatan.

     <code class="sql">CREATE INDEX idx_department ON employees(department);</code>
    Salin selepas log masuk
  2. Elakkan menggunakan pilih * : Daripada menggunakan SELECT * , tentukan hanya lajur yang anda perlukan. Ini mengurangkan jumlah data yang perlu diproses.

     <code class="sql">-- Instead of SELECT * FROM employees GROUP BY department; -- Use SELECT department, COUNT(*) FROM employees GROUP BY department;</code>
    Salin selepas log masuk
  3. Gunakan di mana sebelum kumpulan oleh : menapis seberapa banyak baris yang mungkin menggunakan WHERE sebelum memohon GROUP BY . Ini mengurangkan bilangan baris yang perlu dikelompokkan.

     <code class="sql">SELECT department, COUNT(*) FROM employees WHERE salary > 50000 GROUP BY department;</code>
    Salin selepas log masuk
  4. Pertimbangkan menggunakan subqueries atau jadual yang diperolehi : dalam beberapa kes, menggunakan subquery untuk pra-agregat data sebelum menggunakan agregasi akhir dapat meningkatkan prestasi.

     <code class="sql">SELECT d.department, SUM(e.total_salary) as total_department_salary FROM ( SELECT department, SUM(salary) as total_salary FROM employees GROUP BY employee_id, department ) e JOIN departments d ON e.department = d.department GROUP BY d.department;</code>
    Salin selepas log masuk
  5. Gunakan Jelaskan : Gunakan pernyataan EXPLAIN untuk menganalisis pelan pelaksanaan pertanyaan anda. Ini dapat membantu anda mengenal pasti kemungkinan kesesakan dan mengoptimumkan dengan sewajarnya.

     <code class="sql">EXPLAIN SELECT department, COUNT(*) FROM employees GROUP BY department;</code>
    Salin selepas log masuk

Dengan menggunakan teknik pengoptimuman ini, anda dapat meningkatkan prestasi pertanyaan yang menggunakan fungsi agregat di MySQL.

Atas ialah kandungan terperinci Bagaimanakah anda menggunakan fungsi agregat dalam MySQL (mis., Kira, SUM, AVG, MIN, MAX)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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