MySQL avg() adalah fungsi agregat yang digunakan untuk mengembalikan nilai rata-rata ekspresi dalam berbagai catatan
Sintaksis
Berikut ini adalah sintaks dasar fungsi avg() di MySQL
Penjelasan parameter
agregat_ekspresi. Ini menentukan kolom atau ekspresi yang akan kita temukan hasil rata-ratanya
table_name. Ini menentukan tabel dari mana kita ingin mengambil catatan. Harus ada setidaknya satu tabel yang tercantum dalam klausa FROM
kondisi WHERE. Itu opsional. Ini menentukan kondisi yang harus dipenuhi untuk catatan yang akan dipilih
Contoh fungsi MySQL avg()
Pertimbangkan database kami memiliki tabel bernama karyawan, memiliki data berikut. Sekarang, kita akan memahami fungsi ini dengan berbagai contoh
1. Contoh Dasar
Jalankan kueri berikut yang menghapus rekaman duplikat di kolom working_hours tabel karyawan, lalu mengembalikan nilai rata-rata
Saat menggunakan MySQL, Anda dapat menggunakan fungsi SELECT Name, District, Population FROM City WHERE CountryCode = 'AUS';5 untuk menghitung nilai rata-rata dari rentang nilai
Misalnya, Anda dapat menggunakan fungsi ini untuk mengetahui rata-rata populasi kota untuk negara atau negara bagian tertentu. Mengingat suatu negara akan memiliki banyak kota, masing-masing dengan populasi yang berbeda, Anda dapat mengetahui rata-rata di antara kota-kota tersebut. Satu kota mungkin memiliki populasi, katakanlah, 50.000 sementara yang lain memiliki populasi 500.000. Fungsi SELECT Name, District, Population FROM City WHERE CountryCode = 'AUS';5 akan menghitung rata-rata untuk Anda
Sintaksis
Sintaks SELECT Name, District, Population FROM City WHERE CountryCode = 'AUS';5 berjalan seperti ini
AVG([DISTINCT] expr) [over_clause]Di mana SELECT Name, District, Population FROM City WHERE CountryCode = 'AUS';8 adalah ekspresi yang Anda inginkan rata-ratanya
_SELECT Name, District, Population FROM City WHERE CountryCode = 'AUS';_9 adalah klausa opsional yang berfungsi dengan fungsi jendela. Cara kerja fungsi jendela adalah, untuk setiap baris dari kueri, lakukan penghitungan menggunakan baris yang terkait dengan baris tersebut. Dalam hal ini, SELECT Name, District, Population FROM City WHERE CountryCode = 'AUS';_9 menentukan cara mempartisi baris kueri menjadi grup untuk diproses oleh fungsi jendela. Perhatikan bahwa SELECT Name, District, Population FROM City WHERE CountryCode = 'AUS';_9 hanya dapat digunakan jika Anda tidak menggunakan kata kunci +---------------+-----------------+------------+ | Name | District | Population | +---------------+-----------------+------------+ | Sydney | New South Wales | 3276207 | | Melbourne | Victoria | 2865329 | | Brisbane | Queensland | 1291117 | | Perth | West Australia | 1096829 | | Adelaide | South Australia | 978100 | | Canberra | Capital Region | 322723 | | Gold Coast | Queensland | 311932 | | Newcastle | New South Wales | 270324 | | Central Coast | New South Wales | 227657 | | Wollongong | New South Wales | 219761 | | Hobart | Tasmania | 126118 | | Geelong | Victoria | 125382 | | Townsville | Queensland | 109914 | | Cairns | Queensland | 92273 | +---------------+-----------------+------------+2
Data mentah
Pertama, inilah data mentah yang akan kami gunakan untuk contoh di halaman ini
SELECT Name, District, Population FROM City WHERE CountryCode = 'AUS';Hasil
+---------------+-----------------+------------+ | Name | District | Population | +---------------+-----------------+------------+ | Sydney | New South Wales | 3276207 | | Melbourne | Victoria | 2865329 | | Brisbane | Queensland | 1291117 | | Perth | West Australia | 1096829 | | Adelaide | South Australia | 978100 | | Canberra | Capital Region | 322723 | | Gold Coast | Queensland | 311932 | | Newcastle | New South Wales | 270324 | | Central Coast | New South Wales | 227657 | | Wollongong | New South Wales | 219761 | | Hobart | Tasmania | 126118 | | Geelong | Victoria | 125382 | | Townsville | Queensland | 109914 | | Cairns | Queensland | 92273 | +---------------+-----------------+------------+_Contoh Dasar
Seperti yang dapat Anda lihat dari data mentah di atas, beberapa “Kabupaten” memiliki lebih dari satu kota, dan setiap kota memiliki populasi yang berbeda. Kita dapat menggunakan fungsi SELECT Name, District, Population FROM City WHERE CountryCode = 'AUS';_5 untuk mencari rata-rata populasi kota-kota di setiap distrik
SELECT District, AVG(Population) AS 'Average Population' FROM City WHERE CountryCode = 'AUS' AND District = 'New South Wales';Hasil
Jadi kita bisa melihat bahwa New South Wales memiliki populasi kota rata-rata 998487. 2500
Membulatkan Rata-Rata
Anda mungkin memperhatikan bahwa hasil dari contoh sebelumnya cukup tepat – hasil yang dikembalikan ke empat angka desimal. Dalam kasus kami, ini mungkin terlalu berlebihan. Kami tidak membutuhkan hasil ke tempat desimal keempat. Oleh karena itu, kita dapat menggunakan fungsi +---------------+-----------------+------------+ | Name | District | Population | +---------------+-----------------+------------+ | Sydney | New South Wales | 3276207 | | Melbourne | Victoria | 2865329 | | Brisbane | Queensland | 1291117 | | Perth | West Australia | 1096829 | | Adelaide | South Australia | 978100 | | Canberra | Capital Region | 322723 | | Gold Coast | Queensland | 311932 | | Newcastle | New South Wales | 270324 | | Central Coast | New South Wales | 227657 | | Wollongong | New South Wales | 219761 | | Hobart | Tasmania | 126118 | | Geelong | Victoria | 125382 | | Townsville | Queensland | 109914 | | Cairns | Queensland | 92273 | +---------------+-----------------+------------+_4 untuk membulatkannya ke bilangan bulat terdekat (atau ke bilangan desimal tertentu jika kita menginginkannya)
Berikut adalah contoh pembulatan hasil ke bilangan bulat terdekat
SELECT District, ROUND(AVG(Population)) AS 'Average Population' FROM City WHERE CountryCode = 'AUS' AND District = 'New South Wales';Hasil
+-----------------+--------------------+ | District | Average Population | +-----------------+--------------------+ | New South Wales | 998487 | +-----------------+--------------------+Secara default, fungsi +---------------+-----------------+------------+ | Name | District | Population | +---------------+-----------------+------------+ | Sydney | New South Wales | 3276207 | | Melbourne | Victoria | 2865329 | | Brisbane | Queensland | 1291117 | | Perth | West Australia | 1096829 | | Adelaide | South Australia | 978100 | | Canberra | Capital Region | 322723 | | Gold Coast | Queensland | 311932 | | Newcastle | New South Wales | 270324 | | Central Coast | New South Wales | 227657 | | Wollongong | New South Wales | 219761 | | Hobart | Tasmania | 126118 | | Geelong | Victoria | 125382 | | Townsville | Queensland | 109914 | | Cairns | Queensland | 92273 | +---------------+-----------------+------------+_4 membulatkan ke bilangan bulat terdekat. Alternatifnya, kami dapat memberikan argumen ke-2 untuk menentukan sejumlah tempat desimal, tetapi dalam kasus ini, kami tidak menginginkannya
Klausul GROUP BY
Kita dapat menggunakan klausa +---------------+-----------------+------------+ | Name | District | Population | +---------------+-----------------+------------+ | Sydney | New South Wales | 3276207 | | Melbourne | Victoria | 2865329 | | Brisbane | Queensland | 1291117 | | Perth | West Australia | 1096829 | | Adelaide | South Australia | 978100 | | Canberra | Capital Region | 322723 | | Gold Coast | Queensland | 311932 | | Newcastle | New South Wales | 270324 | | Central Coast | New South Wales | 227657 | | Wollongong | New South Wales | 219761 | | Hobart | Tasmania | 126118 | | Geelong | Victoria | 125382 | | Townsville | Queensland | 109914 | | Cairns | Queensland | 92273 | +---------------+-----------------+------------+_6 untuk mencantumkan setiap kabupaten/negara bagian, beserta rata-rata populasi kotanya
SELECT District, ROUND(AVG(Population)) AS 'Average Population' FROM City WHERE CountryCode = 'AUS' GROUP BY District;Hasil
+-----------------+--------------------+ | District | Average Population | +-----------------+--------------------+ | New South Wales | 998487 | | Victoria | 1495356 | | Queensland | 451309 | | West Australia | 1096829 | | South Australia | 978100 | | Capital Region | 322723 | | Tasmania | 126118 | +-----------------+--------------------+Klausul ORDER BY
Kita juga dapat menggunakan klausa +---------------+-----------------+------------+ | Name | District | Population | +---------------+-----------------+------------+ | Sydney | New South Wales | 3276207 | | Melbourne | Victoria | 2865329 | | Brisbane | Queensland | 1291117 | | Perth | West Australia | 1096829 | | Adelaide | South Australia | 978100 | | Canberra | Capital Region | 322723 | | Gold Coast | Queensland | 311932 | | Newcastle | New South Wales | 270324 | | Central Coast | New South Wales | 227657 | | Wollongong | New South Wales | 219761 | | Hobart | Tasmania | 126118 | | Geelong | Victoria | 125382 | | Townsville | Queensland | 109914 | | Cairns | Queensland | 92273 | +---------------+-----------------+------------+_7 untuk menentukan kolom yang akan dipesan
SELECT District, ROUND(AVG(Population)) AS 'Average Population' FROM City WHERE CountryCode = 'AUS' GROUP BY District ORDER BY `Average Population`;Hasil
Perhatikan bahwa, saat mengurutkan dengan alias multi-kata (seperti +---------------+-----------------+------------+ | Name | District | Population | +---------------+-----------------+------------+ | Sydney | New South Wales | 3276207 | | Melbourne | Victoria | 2865329 | | Brisbane | Queensland | 1291117 | | Perth | West Australia | 1096829 | | Adelaide | South Australia | 978100 | | Canberra | Capital Region | 322723 | | Gold Coast | Queensland | 311932 | | Newcastle | New South Wales | 270324 | | Central Coast | New South Wales | 227657 | | Wollongong | New South Wales | 219761 | | Hobart | Tasmania | 126118 | | Geelong | Victoria | 125382 | | Townsville | Queensland | 109914 | | Cairns | Queensland | 92273 | +---------------+-----------------+------------+8), Anda harus menggunakan karakter backtick (+---------------+-----------------+------------+ | Name | District | Population | +---------------+-----------------+------------+ | Sydney | New South Wales | 3276207 | | Melbourne | Victoria | 2865329 | | Brisbane | Queensland | 1291117 | | Perth | West Australia | 1096829 | | Adelaide | South Australia | 978100 | | Canberra | Capital Region | 322723 | | Gold Coast | Queensland | 311932 | | Newcastle | New South Wales | 270324 | | Central Coast | New South Wales | 227657 | | Wollongong | New South Wales | 219761 | | Hobart | Tasmania | 126118 | | Geelong | Victoria | 125382 | | Townsville | Queensland | 109914 | | Cairns | Queensland | 92273 | +---------------+-----------------+------------+9) alih-alih apostrof (SELECT District, AVG(Population) AS 'Average Population' FROM City WHERE CountryCode = 'AUS' AND District = 'New South Wales';0) untuk mengapit dua kata
Temukan Panjang Karakter Rata-Rata
Fungsi SELECT Name, District, Population FROM City WHERE CountryCode = 'AUS';5 tidak terbatas hanya pada kolom dengan data numerik. Anda juga dapat menggabungkan SELECT Name, District, Population FROM City WHERE CountryCode = 'AUS';5 dengan fungsi lain untuk menemukan rata-rata di area lain
Misalnya, dengan menggunakan data sampel kami, kami dapat menemukan panjang karakter rata-rata dari semua nilai di kolom SELECT District, AVG(Population) AS 'Average Population' FROM City WHERE CountryCode = 'AUS' AND District = 'New South Wales';3
SELECT Name, District, Population FROM City WHERE CountryCode = 'AUS';_1Hasil
SELECT Name, District, Population FROM City WHERE CountryCode = 'AUS';_2Menggunakan Klausul OVER
Seperti yang disebutkan, sintaks memungkinkan klausa SELECT District, AVG(Population) AS 'Average Population' FROM City WHERE CountryCode = 'AUS' AND District = 'New South Wales';4 untuk disertakan dalam kueri Anda. Ini bisa menjadi sedikit rumit, tetapi pada dasarnya, klausa SELECT District, AVG(Population) AS 'Average Population' FROM City WHERE CountryCode = 'AUS' AND District = 'New South Wales';4 memungkinkan Anda menentukan cara mempartisi baris kueri ke dalam grup untuk diproses oleh fungsi jendela
Ini sebuah contoh
SELECT Name, District, Population FROM City WHERE CountryCode = 'AUS';_3Hasil
SELECT Name, District, Population FROM City WHERE CountryCode = 'AUS';_4Contoh ini mempartisi baris dengan SELECT District, AVG(Population) AS 'Average Population' FROM City WHERE CountryCode = 'AUS' AND District = 'New South Wales';6, memberikan rata-rata untuk setiap partisi (distrik). Ini memungkinkan Anda untuk melihat data yang lebih terperinci, seperti populasi kota, bersama dengan populasi rata-rata untuk distrik tempatnya berada.