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
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.