Tutorial Fungsi Agregat MySQL: SUM, AVG, MAX, MIN, COUNT, DISTINCT

Anonim

Fungsi Agregat adalah semua perkara

  • Melakukan pengiraan pada beberapa baris
  • Dari satu lajur meja
  • Dan mengembalikan satu nilai.

Piawaian ISO mentakrifkan lima (5) fungsi agregat iaitu;

1) COUNT

2) SUM
3) AVG
4) MIN
5) MAX

Mengapa menggunakan fungsi agregat.

Dari perspektif perniagaan, tahap organisasi yang berbeza mempunyai keperluan maklumat yang berbeza. Pengurus peringkat atasan biasanya berminat untuk mengetahui keseluruhan angka dan tidak memerlukan perincian individu.

> Fungsi agregat membolehkan kita menghasilkan data ringkasan dari pangkalan data kita dengan mudah.

Contohnya, dari pangkalan data myflix kami, pihak pengurusan mungkin memerlukan laporan berikut

  • Filem sewaan paling sedikit.
  • Filem yang paling banyak disewa.
  • Jumlah purata setiap filem disewa dalam sebulan.

Kami menghasilkan laporan di atas dengan mudah menggunakan fungsi agregat.

Mari kita perhatikan fungsi agregat secara terperinci.

Fungsi COUNT

Fungsi COUNT mengembalikan jumlah nilai dalam bidang yang ditentukan. Ia berfungsi pada kedua-dua jenis data berangka dan bukan angka. Semua fungsi agregat secara lalai mengecualikan nilai nol sebelum mengerjakan data.

COUNT (*) adalah pelaksanaan khas fungsi COUNT yang mengembalikan jumlah semua baris dalam jadual yang ditentukan. COUNT (*) juga mempertimbangkan Null dan pendua.

Jadual yang ditunjukkan di bawah menunjukkan data dalam jadual movierentals

nombor rujukan tarikh transaksi tarikh_pulangan nombor keahlian filem_id filem_ kembali
11 20-06-2012 BULAN 1 1 0
12 22-06-2012 25-06-2012 1 2 0
13 22-06-2012 25-06-2012 3 2 0
14 21-06-2012 24-06-2012 2 2 0
15 23-06-2012 BULAN 3 3 0

Anggaplah kita mahu mendapatkan berapa kali filem dengan id 2 disewakan

SELECT COUNT(`movie_id`) FROM `movierentals` WHERE `movie_id` = 2;

Menjalankan pertanyaan di atas di MySQL workbench terhadap myflixdb memberikan hasil berikut.

 
COUNT('movie_id')
3

Kata Kunci DISTINCT

Kata kunci DISTINCT yang membolehkan kami menghilangkan pendua dari hasil kami. Ini dicapai dengan mengelompokkan nilai yang serupa.

Untuk menghayati konsep Distinct, mari jalankan pertanyaan sederhana

SELECT `movie_id` FROM `movierentals`;
 
movie_id
1
2
2
2
3

Sekarang mari kita jalankan pertanyaan yang sama dengan kata kunci yang berbeza -

SELECT DISTINCT `movie_id` FROM `movierentals`;

Seperti yang ditunjukkan di bawah ini, perbezaan tidak mengira catatan pendua dari hasilnya.

 
movie_id
1
2
3

Fungsi MIN

Fungsi MIN mengembalikan nilai terkecil di medan jadual yang ditentukan .

Sebagai contoh, andaikan kita ingin mengetahui tahun filem tertua di perpustakaan kita dilancarkan, kita boleh menggunakan fungsi MIN MySQL untuk mendapatkan maklumat yang diinginkan.

Pertanyaan berikut membantu kami mencapainya

SELECT MIN(`year_released`) FROM `movies`;

Menjalankan pertanyaan di atas di MySQL workbench terhadap myflixdb memberikan hasil berikut.

 
MIN('year_released')
2005

Fungsi MAX

Sama seperti namanya, fungsi MAX adalah kebalikan dari fungsi MIN. Ia mengembalikan nilai terbesar dari medan jadual yang ditentukan .

Anggaplah kita ingin mendapatkan tahun filem terbaru dalam pangkalan data kita dilancarkan. Kita boleh menggunakan fungsi MAX dengan mudah untuk mencapainya.

Contoh berikut mengembalikan tahun filem terbaru yang dikeluarkan.

SELECT MAX(`year_released`) FROM `movies`;

Menjalankan pertanyaan di atas di MySQL workbench menggunakan myflixdb memberikan hasil berikut.

 
MAX('year_released')
2012

Fungsi SUM

Andaikan kita mahukan laporan yang memberikan jumlah pembayaran yang dibuat setakat ini. Kita dapat menggunakan fungsi MySQL SUM yang mengembalikan jumlah semua nilai dalam lajur yang ditentukan . SUM berfungsi pada medan angka sahaja . Nilai kosong dikecualikan dari hasil yang dikembalikan.

Jadual berikut menunjukkan data dalam jadual pembayaran-

pembayaran_ id nombor keahlian tarikh pembayaran penerangan amaun yang dibayar luaran_ rujukan _nombor
1 1 23-07-2012 Bayaran sewa filem 2500 11
2 1 25-07-2012 Bayaran sewa filem 2000 12
3 3 30-07-2012 Bayaran sewa filem 6000 BULAN

Pertanyaan yang ditunjukkan di bawah mendapat semua pembayaran yang dibuat dan menjumlahkannya untuk mengembalikan satu hasil.

SELECT SUM(`amount_paid`) FROM `payments`;

Melaksanakan pertanyaan di atas di meja kerja MySQL terhadap myflixdb memberikan hasil berikut.

 
SUM('amount_paid')
10500

Fungsi AVG

Fungsi MySQL AVG mengembalikan nilai rata-rata dalam lajur yang ditentukan . Sama seperti fungsi SUM, ia berfungsi hanya pada jenis data berangka .

Anggaplah kita mahu mencari jumlah purata yang dibayar. Kami boleh menggunakan pertanyaan berikut -

SELECT AVG(`amount_paid`) FROM `payments`;

Melaksanakan pertanyaan di atas di meja kerja MySQL, memberikan hasil berikut kepada kami.

 
AVG('amount_paid')
3500

Ringkasan

  • MySQL menyokong kelima (5) fungsi agregat standard ISO COUNT, SUM, AVG, MIN dan MAX.
  • Fungsi SUM dan AVG hanya berfungsi pada data berangka.
  • Sekiranya anda ingin mengecualikan nilai pendua dari hasil fungsi agregat, gunakan kata kunci DISTINCT. Kata kunci SEMUA merangkumi pendua. Sekiranya tidak ditentukan, SEMUA dianggap sebagai lalai.
  • Fungsi agregat boleh digunakan bersama dengan klausa SQL lain seperti GROUP BY

Teaser Otak

Anda fikir fungsi agregat itu mudah. Cuba ini!

Contoh berikut mengumpulkan ahli mengikut nama, mengira jumlah pembayaran, jumlah pembayaran rata-rata dan jumlah keseluruhan jumlah pembayaran.

SELECT m.`full_names`,COUNT(p.`payment_id`) AS `paymentscount`,AVG(p.`amount_paid`) AS `averagepaymentamount`,SUM(p.`amount_paid`) AS `totalpayments` FROM members m, payments p WHERE m.`membership_number` = p.`membership_number` GROUP BY m.`full_names`;

Menjalankan contoh di atas di meja kerja MySQL memberikan hasil berikut.