Jadual Kandungan
Contoh MySQL AVG
Fungsi MySQL AVG() dengan DISTINCT
MySQL AVG dengan klausa GROUP BY
MySQL AVG dengan klausa HAVING
Fungsi dan subqueries MySQL AVG()
Fungsi MySQL AVG dengan nilai NULL
MySQL AVG dengan fungsi aliran kawalan
Rumah pangkalan data tutorial mysql Bagaimana untuk mencari nilai purata dalam mysql

Bagaimana untuk mencari nilai purata dalam mysql

Dec 02, 2021 am 11:29 AM
mysql nilai purata

Dalam mysql, anda boleh menggunakan fungsi AVG() untuk mencari purata Fungsi ini boleh mengira purata data lajur yang ditentukan dengan mengira bilangan baris yang dikembalikan dan jumlah setiap baris data sintaks "PILIH AVG (nama_lajur) DARI nama_jadual".

Bagaimana untuk mencari nilai purata dalam mysql

Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.

Dalam mysql, anda boleh menggunakan fungsi AVG() untuk mencari purata.

Fungsi MySQL AVG() ialah fungsi agregat yang digunakan untuk mengira purata set nilai atau ungkapan.

Fungsi AVG() boleh mencari purata data lajur yang ditentukan dengan mengira bilangan baris yang dikembalikan dan jumlah setiap baris data. Sintaks fungsi

AVG() adalah seperti berikut:

SELECT AVG(column_name) FROM table_name;
Salin selepas log masuk

Operator DISTINCT juga boleh ditambah pada fungsi AVG() untuk mengira purata nilai yang berbeza. Contohnya, jika anda mempunyai set nilai 1, 1, 2, 3, fungsi AVG() dengan operasi DISTINCT akan mengembalikan jumlah nilai yang berbeza, iaitu: (1 2 3)/3 = 2.00 .

Contoh MySQL AVG

Kami akan menggunakan jadual products dalam pangkalan data sampel untuk demonstrasi Rajah berikut ialah struktur jadual products -

mysql> desc products;
+--------------------+---------------+------+-----+---------+------------------+
| Field              | Type          | Null | Key | Default | Extra            |
+--------------------+---------------+------+-----+---------+------------------+
| productCode        | varchar(15)   | NO   | PRI |         |                  |
| productName        | varchar(70)   | NO   | MUL | NULL    |                  |
| productLine        | varchar(50)   | NO   | MUL | NULL    |                  |
| productScale       | varchar(10)   | NO   |     | NULL    |                  |
| productVendor      | varchar(50)   | NO   |     | NULL    |                  |
| productDescription | text          | NO   |     | NULL    |                  |
| quantityInStock    | smallint(6)   | NO   |     | NULL    |                  |
| buyPrice           | decimal(10,2) | NO   |     | NULL    |                  |
| MSRP               | decimal(10,2) | NO   |     | NULL    |                  |
| stockValue         | double        | YES  |     | NULL    | STORED GENERATED |
+--------------------+---------------+------+-----+---------+------------------+
10 rows in set
Salin selepas log masuk

untuk dikira productsHarga purata semua produk dalam jadual boleh disoal menggunakan fungsi AVG seperti berikut:

SELECT AVG(buyprice) 'Avarage Price' FROM products;
Salin selepas log masuk

Laksanakan pernyataan pertanyaan di atas dan dapatkan keputusan berikut -

mysql> SELECT AVG(buyprice) 'Avarage Price' FROM products;
+---------------+
| Avarage Price |
+---------------+
| 54.395182     |
+---------------+
1 row in set
Salin selepas log masuk

Sila ambil perhatian bahawa < Fungsi 🎜> digunakan untuk memformat nilai purata yang dikembalikan oleh fungsi FORMAT. AVG

Anda boleh menambah klausa

pada pernyataan SELECT untuk mengira purata subset nilai. Contohnya, untuk mengira harga purata produk dengan barisan produk WHERE, anda boleh menggunakan pertanyaan berikut: Classic Cars

SELECT AVG(buyprice) &#39;Avarage Classic Cars Price&#39;
FROM products
WHERE productline = &#39;Classic Cars&#39;;
Salin selepas log masuk
Laksanakan pernyataan pertanyaan di atas dan dapatkan keputusan berikut -

mysql> SELECT AVG(buyprice) &#39;Avarage Classic Cars Price&#39;
FROM products
WHERE productline = &#39;Classic Cars&#39;;
+----------------------------+
| Avarage Classic Cars Price |
+----------------------------+
| 64.446316                  |
+----------------------------+
1 row in set
Salin selepas log masuk

Fungsi MySQL AVG() dengan DISTINCT

Sesetengah produk mempunyai harga yang sama, anda boleh menggunakan pertanyaan berikut untuk menyemaknya:

SELECT COUNT(buyprice) - COUNT(DISTINCT buyprice) FROM products;
Salin selepas log masuk
Laksanakan pernyataan pertanyaan di atas dan dapatkan keputusan berikut -

mysql&gt; SELECT COUNT(buyprice) - COUNT(DISTINCT buyprice) FROM products;
+--------------------------------------------+
| COUNT(buyprice) - COUNT(DISTINCT buyprice) |
+--------------------------------------------+
|                                          2 |
+--------------------------------------------+
1 row in set
Salin selepas log masuk
Anda boleh menggunakan fungsi AVG() untuk mengira purata harga yang berbeza dengan menambah operator

, seperti ditunjukkan di bawah: DISTINCT

SELECT AVG(DISTINCT buyprice) FROM products;
Salin selepas log masuk
Laksanakan pernyataan pertanyaan di atas dan dapatkan Keputusan berikut -

mysql&gt; SELECT AVG(DISTINCT buyprice) FROM products;
+------------------------+
| AVG(DISTINCT buyprice) |
+------------------------+
| 54.372870              |
+------------------------+
1 row in set
Salin selepas log masuk
Hasilnya berbeza sedikit daripada harga purata menggunakan operator

. DISTINCT

MySQL AVG dengan klausa GROUP BY

Kami sering menggunakan fungsi AVG bersama dengan klausa

untuk mengira purata setiap kumpulan baris dalam jadual. GROUP BY

Sebagai contoh, untuk mengira harga purata produk bagi setiap barisan produk, anda akan menggunakan fungsi AVG dengan klausa

, seperti berikut: GROUP BY

SELECT productline,
       AVG(buyprice) &#39;Avarage Price&#39;
FROM products
GROUP BY productline;
Salin selepas log masuk
Lakukan pertanyaan di atas penyata dan dapatkan hasil berikut -

mysql> SELECT productline,
       AVG(buyprice) &#39;Avarage Price&#39;
FROM products
GROUP BY productline;
+------------------+---------------+
| productline      | Avarage Price |
+------------------+---------------+
| Classic Cars     | 64.446316     |
| Motorcycles      | 50.685385     |
| Planes           | 49.629167     |
| Ships            | 47.007778     |
| Trains           | 43.923333     |
| Trucks and Buses | 56.329091     |
| Vintage Cars     | 46.066250     |
+------------------+---------------+
7 rows in set
Salin selepas log masuk

MySQL AVG dengan klausa HAVING

Anda boleh menggunakan klausa

dalam fungsi AVG untuk mengumpulkan syarat tetapan Purata . Contohnya, jika anda ingin memilih hanya barisan produk yang purata harga produknya lebih besar daripada HAVING, anda boleh menggunakan pertanyaan berikut: 50

SELECT productline, AVG(buyprice) &#39;Avarage Price&#39; FROM products GROUP BY productline HAVING AVG(buyprice) &gt; 50;
Salin selepas log masuk
Laksanakan pernyataan pertanyaan di atas dan dapatkan hasil berikut-

mysql> SELECT productline, AVG(buyprice) &#39;Avarage Price&#39; FROM products GROUP BY productline HAVING AVG(buyprice) &gt; 50;
+------------------+---------------+
| productline      | Avarage Price |
+------------------+---------------+
| Classic Cars     | 64.446316     |
| Motorcycles      | 50.685385     |
| Trucks and Buses | 56.329091     |
+------------------+---------------+
3 rows in set
Salin selepas log masuk

Fungsi dan subqueries MySQL AVG()

Anda boleh menggunakan fungsi AVG() beberapa kali dalam pernyataan SQL untuk mengira purata set purata . Sebagai contoh, purata harga pembelian barisan produk boleh dikira seperti berikut:

SELECT AVG(pl_avg) &#39;Average Product&#39;
FROM (
    SELECT AVG(buyprice) pl_avg
    FROM products
    GROUP BY productline
) avgs;
Salin selepas log masuk
Lakukan pernyataan pertanyaan di atas dan dapatkan hasil berikut-

mysql> SELECT AVG(pl_avg) &#39;Average Product&#39;
FROM (
    SELECT AVG(buyprice) pl_avg
    FROM products
    GROUP BY productline
) avgs;
+-----------------+
| Average Product |
+-----------------+
| 51.1553314286   |
+-----------------+
1 row in set
Salin selepas log masuk
Cara ia berfungsi-

  • Subquery mengira purata harga pembelian berdasarkan barisan produk.
  • Pertanyaan luar mengira purata harga pembelian bagi barisan produk yang dikembalikan daripada subkueri.

Fungsi MySQL AVG dengan nilai NULL

Fungsi AVG() mengabaikan nilai

dalam pengiraan, lihat contoh berikut: NULL

Pertama , buat jadual baharu bernama dengan dua lajur t dan id, lajur val boleh mengandungi nilai val. NULL

CREATE TABLE IF NOT EXISTS t(
    id  int auto_increment primary key,
    val int
);
Salin selepas log masuk

Kedua , masukkan beberapa baris dalam jadual , termasuk nilai t. NULL

INSERT INTO t(val)
VALUES(1),(2),(nulL),(3);
Salin selepas log masuk

Ketiga , gunakan fungsi untuk mengira nilai purata nilai dalam lajur AVG(): val

SELECT AVG(val) FROM t;
Salin selepas log masuk
Laksanakan pernyataan pertanyaan di atas dan dapatkan Keputusan berikut -

mysql&gt; SELECT AVG(val) FROM t;
+----------+
| AVG(val) |
+----------+
| 2.0000   |
+----------+
1 row in set
Salin selepas log masuk
Penyataan ini mengembalikan

seperti yang dijangkakan kerana nilai 2 tidak termasuk dalam pengiraan fungsi AVG. NULL

MySQL AVG dengan fungsi aliran kawalan

Untuk mengira purata lajur dan mengira secara bersyarat purata lajur yang sama dalam satu penyata, anda boleh menggunakan fungsi AVG untuk fungsi aliran kawalan (seperti

, IF, CASE, IFNULL, dsb.). NULLIF

Sebagai contoh, untuk mengira nisbah harga purata barisan produk

kepada harga purata semua produk, sila gunakan pernyataan berikut: Classic Cars

SELECT AVG(IF(productline=&#39;Classic Cars&#39;,buyprice,NULL)) / AVG(buyprice) &#39;Classic Cars/ Products&#39;
FROM products;
Salin selepas log masuk
Laksanakan perkara di atas pernyataan pertanyaan dan dapatkan hasil berikut -

mysql> SELECT AVG(IF(productline=&#39;Classic Cars&#39;,buyprice,NULL)) / AVG(buyprice) &#39;Classic Cars/ Products&#39;
FROM products;
+------------------------+
| Classic Cars/ Products |
+------------------------+
| 1.1847798580           |
+------------------------+
1 row in set
Salin selepas log masuk
Ungkapan

mengembalikan harga jika barisan produk ialah Classic Cars, jika tidak, ia mengembalikan IF(productline='Classic Cars',buyprice,NULL). NULL

Oleh kerana fungsi AVG mengabaikan nilai NULL dalam pengiraan, ungkapan AVG(IF(productline ='Classic Cars',buyprice,NULL)) hanya mengira harga purata produk yang barisan produknya Classic Cars.

[Cadangan berkaitan: tutorial video mysql]

Atas ialah kandungan terperinci Bagaimana untuk mencari nilai purata dalam mysql. 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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Kemahiran pemprosesan struktur data besar PHP Kemahiran pemprosesan struktur data besar PHP May 08, 2024 am 10:24 AM

Kemahiran pemprosesan struktur data besar PHP

Bagaimana untuk mengoptimumkan prestasi pertanyaan MySQL dalam PHP? Bagaimana untuk mengoptimumkan prestasi pertanyaan MySQL dalam PHP? Jun 03, 2024 pm 08:11 PM

Bagaimana untuk mengoptimumkan prestasi pertanyaan MySQL dalam PHP?

Bagaimana untuk menggunakan sandaran dan pemulihan MySQL dalam PHP? Bagaimana untuk menggunakan sandaran dan pemulihan MySQL dalam PHP? Jun 03, 2024 pm 12:19 PM

Bagaimana untuk menggunakan sandaran dan pemulihan MySQL dalam PHP?

Apakah senario aplikasi jenis penghitungan Java dalam pangkalan data? Apakah senario aplikasi jenis penghitungan Java dalam pangkalan data? May 05, 2024 am 09:06 AM

Apakah senario aplikasi jenis penghitungan Java dalam pangkalan data?

Bagaimana untuk memasukkan data ke dalam jadual MySQL menggunakan PHP? Bagaimana untuk memasukkan data ke dalam jadual MySQL menggunakan PHP? Jun 02, 2024 pm 02:26 PM

Bagaimana untuk memasukkan data ke dalam jadual MySQL menggunakan PHP?

Bagaimana untuk membetulkan ralat mysql_native_password tidak dimuatkan pada MySQL 8.4 Bagaimana untuk membetulkan ralat mysql_native_password tidak dimuatkan pada MySQL 8.4 Dec 09, 2024 am 11:42 AM

Bagaimana untuk membetulkan ralat mysql_native_password tidak dimuatkan pada MySQL 8.4

Bagaimana untuk menggunakan prosedur tersimpan MySQL dalam PHP? Bagaimana untuk menggunakan prosedur tersimpan MySQL dalam PHP? Jun 02, 2024 pm 02:13 PM

Bagaimana untuk menggunakan prosedur tersimpan MySQL dalam PHP?

Strategi pengoptimuman prestasi untuk halaman tatasusunan PHP Strategi pengoptimuman prestasi untuk halaman tatasusunan PHP May 02, 2024 am 09:27 AM

Strategi pengoptimuman prestasi untuk halaman tatasusunan PHP

See all articles