Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

AVG() – Menghitung Nilai Rata-Rata Kolom di MySQL

Saat menggunakan MySQL, Anda dapat menggunakan AVG() berfungsi untuk menghitung nilai rata-rata dari rentang nilai.

Misalnya, Anda dapat menggunakan fungsi ini untuk mencari tahu berapa 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 berapa rata-rata di antara mereka. Satu kota mungkin memiliki populasi katakanlah, 50.000 sementara yang lain memiliki populasi 500.000. AVG() fungsi akan menghitung rata-rata untuk Anda.

Sintaks

Sintaks AVG() seperti ini:

AVG([DISTINCT] expr) [over_clause]

Dimana expr adalah ekspresi yang Anda inginkan rata-ratanya.

 over_clause adalah klausa opsional yang bekerja dengan fungsi jendela. Cara kerja fungsi jendela adalah, untuk setiap baris dari kueri, melakukan penghitungan menggunakan baris yang terkait dengan baris tersebut. Dalam hal ini, over_clause menentukan cara mempartisi baris kueri ke dalam grup untuk diproses oleh fungsi jendela. Perhatikan bahwa over_clause hanya dapat digunakan jika Anda tidak menggunakan DISTINCT kata kunci.

Data Mentah

Pertama, inilah data mentah yang akan kita 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 Anda lihat dari data mentah di atas, beberapa “Distrik” memiliki lebih dari satu kota, dan setiap kota memiliki populasi yang berbeda. Kita dapat menggunakan AVG() fungsi untuk mencari rata-rata penduduk kota-kota dalam setiap kabupaten:

SELECT District, AVG(Population) AS 'Average Population'
FROM City
WHERE CountryCode = 'AUS'
AND District = 'New South Wales';

Hasil:

+-----------------+--------------------+
| District        | Average Population |
+-----------------+--------------------+
| New South Wales |        998487.2500 |
+-----------------+--------------------+

Jadi kita dapat 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 – ia mengembalikan hasil ke empat tempat desimal. Dalam kasus kami, ini mungkin terlalu berlebihan. Kami tidak membutuhkan hasil ke tempat desimal keempat. Oleh karena itu, kita dapat menggunakan ROUND() berfungsi untuk membulatkannya ke bilangan bulat terdekat (atau ke bilangan desimal tertentu jika diinginkan).

Berikut ini 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, ROUND() fungsi membulatkan ke bilangan bulat terdekat. Sebagai alternatif, kami dapat memberikan argumen ke-2 untuk menentukan sejumlah tempat desimal, tetapi dalam kasus ini, kami tidak menginginkannya.

GROUP BY Clause

Kita dapat menggunakan GROUP BY klausul untuk mencantumkan setiap kabupaten/negara bagian, bersama dengan 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

Kami juga dapat menggunakan ORDER BY klausa untuk menentukan kolom yang akan dipesan dengan:

SELECT District, ROUND(AVG(Population)) AS 'Average Population'
FROM City
WHERE CountryCode = 'AUS'
GROUP BY District
ORDER BY `Average Population`;

Hasil:

+-----------------+--------------------+
| District        | Average Population |
+-----------------+--------------------+
| Tasmania        |             126118 |
| Capital Region  |             322723 |
| Queensland      |             451309 |
| South Australia |             978100 |
| New South Wales |             998487 |
| West Australia  |            1096829 |
| Victoria        |            1495356 |
+-----------------+--------------------+

Perhatikan bahwa, saat memesan dengan alias multi-kata (seperti `Average Population` ), Anda harus menggunakan karakter backtick (` ) sebagai ganti apostrof (' ) untuk mengelilingi dua kata.

Temukan Panjang Karakter Rata-rata

AVG() fungsinya tidak terbatas hanya pada kolom dengan data numerik. Anda juga dapat menggabungkan AVG() 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 City kolom:

SELECT ROUND(AVG(CHAR_LENGTH(Name))) AS 'Average Character Length'
FROM city
WHERE CountryCode = 'AUS'
AND District = 'New South Wales';

Hasil:

+--------------------------+
| Average Character Length |
+--------------------------+
|                       10 |
+--------------------------+

Menggunakan Klausa OVER

Seperti disebutkan, sintaks memungkinkan untuk OVER klausa untuk disertakan dalam kueri Anda. Ini bisa menjadi sedikit rumit, tetapi pada dasarnya, OVER klausa memungkinkan Anda untuk menentukan cara mempartisi baris kueri ke dalam grup untuk diproses oleh fungsi jendela.

Ini contohnya:

SELECT 
    District,
    Name AS City,
    Population,
    ROUND(AVG(Population) OVER(PARTITION BY District)) AS 'District Avg'
FROM City
WHERE CountryCode = 'AUS'
ORDER BY District;

Hasil:

+-----------------+---------------+------------+--------------+
| District        | City          | Population | District Avg |
+-----------------+---------------+------------+--------------+
| Capital Region  | Canberra      |     322723 |       322723 |
| New South Wales | Sydney        |    3276207 |       998487 |
| New South Wales | Wollongong    |     219761 |       998487 |
| New South Wales | Newcastle     |     270324 |       998487 |
| New South Wales | Central Coast |     227657 |       998487 |
| Queensland      | Townsville    |     109914 |       451309 |
| Queensland      | Brisbane      |    1291117 |       451309 |
| Queensland      | Cairns        |      92273 |       451309 |
| Queensland      | Gold Coast    |     311932 |       451309 |
| South Australia | Adelaide      |     978100 |       978100 |
| Tasmania        | Hobart        |     126118 |       126118 |
| Victoria        | Melbourne     |    2865329 |      1495356 |
| Victoria        | Geelong       |     125382 |      1495356 |
| West Australia  | Perth         |    1096829 |      1096829 |
+-----------------+---------------+------------+--------------+

Contoh ini mempartisi baris dengan District , memberikan rata-rata untuk setiap partisi (distrik). Ini memungkinkan Anda melihat data yang lebih terperinci, seperti populasi kota, bersama dengan populasi rata-rata untuk distrik tempat kota tersebut berada.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya menyimpan dan mengambil gambar di server saya di aplikasi web java

  2. Perbandingan Antara Plugin Klon MySQL dan Xtrabackup

  3. Cara Membuat Tampilan MySQL

  4. Siapkan Database dan Buat pengguna Hanya-Baca di AWS Redshift dan Mysql

  5. Memigrasikan Database MySQL dari Amazon RDS ke DigitalOcean