Rumah >pangkalan data >tutorial mysql >Bagaimana untuk melaksanakan penjumlahan medan dalam mysql

Bagaimana untuk melaksanakan penjumlahan medan dalam mysql

青灯夜游
青灯夜游asal
2021-12-31 16:34:1923897semak imbas

Dalam mysql, anda boleh menggunakan fungsi SUM() untuk melaksanakan penjumlahan medan Fungsi ini mengembalikan jumlah nilai medan yang ditentukan Sintaksnya ialah "SELECT SUM(DISTINCT expression) FROM table name [WHERE clause]. ;)".

Bagaimana untuk melaksanakan penjumlahan medan dalam mysql

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

Dalam mysql, anda boleh menggunakan fungsi SUM() untuk melaksanakan penjumlahan medan. Fungsi

SUM() digunakan untuk mengira jumlah set nilai atau ungkapan dan boleh mengembalikan jumlah nilai medan yang ditentukan Sintaks fungsi SUM() adalah sebagai berikut:

SUM(DISTINCT expression)

SUM()Bagaimanakah fungsi tersebut berfungsi?

  • Jika fungsi SELECT digunakan dalam pernyataan yang tidak mengembalikan baris yang sepadan SUM, fungsi SUM mengembalikan NULL dan bukannya 0. Pengendali
  • DISTINCT membenarkan pengiraan nilai berbeza dalam satu set. Fungsi
  • SUM mengabaikan nilai NULL dalam pengiraan.

Contoh fungsi MySQL SUM()

Mari kita lihat jadual orderdetails dalam pangkalan data sampel (yiibaidb).

Anda boleh menggunakan fungsi SUM() untuk mengira jumlah jumlah nombor pesanan 10100, seperti yang ditunjukkan dalam pertanyaan berikut:

SELECT FORMAT(SUM(quantityOrdered * priceEach),2) total FROM orderdetails WHERE orderNumber = 10100;

Laksanakan pernyataan pertanyaan di atas dan dapatkan keputusan berikut-

mysql> SELECT FORMAT(SUM(quantityOrdered * priceEach),2) total FROM orderdetails WHERE orderNumber = 10100;
+-----------+
| total     |
+-----------+
| 10,223.83 |
+-----------+
1 row in set

Sila ambil perhatian bahawa fungsi FORMAT() digunakan untuk memformat nilai pulangan bagi fungsi SUM().

JUMLAH MySQL dengan klausa GROUP BY

Apabila digabungkan dengan klausa GROUP BY, fungsi SUM() menilai setiap item yang dinyatakan dalam klausa GROUP BY Jumlah daripada kumpulan-kumpulan tersebut.

Sebagai contoh, anda boleh menggunakan fungsi GROUP BY dengan klausa SUM untuk mengira jumlah amaun setiap pesanan, seperti berikut:

SELECT orderNumber,
       FORMAT(SUM(quantityOrdered * priceEach),2) total
FROM orderdetails
GROUP BY orderNumber
ORDER BY SUM(quantityOrdered * priceEach) DESC;

Laksanakan pernyataan pertanyaan di atas untuk dapatkan keputusan berikut -

+-------------+-----------+
| orderNumber | total     |
+-------------+-----------+
|       10165 | 67,392.85 |
|       10287 | 61,402.00 |
|       10310 | 61,234.67 |
|       10212 | 59,830.55 |
*** 此处省略了一大波数据 *****
|       10116 | 1,627.56  |
|       10158 | 1,491.38  |
|       10144 | 1,128.20  |
|       10408 | 615.45    |
+-------------+-----------+
327 rows in set

JUMLAH MySQL dan HAVING

Anda boleh menggunakan klausa HAVING dalam fungsi SUM untuk menapis hasil berdasarkan kriteria tertentu. Sebagai contoh, anda boleh mengira jumlah kuantiti pesanan dan hanya memilih pesanan dengan jumlah jumlah lebih daripada 60000. Pernyataan pertanyaan berikut-

SELECT orderNumber,
       FORMAT(SUM(quantityOrdered * priceEach),2)
FROM orderdetails
GROUP BY orderNumber
HAVING SUM(quantityOrdered * priceEach) > 60000
ORDER BY SUM(quantityOrdered * priceEach);

Laksanakan pernyataan pertanyaan di atas dan dapatkan hasil berikut-

mysql> SELECT orderNumber,
       FORMAT(SUM(quantityOrdered * priceEach),2)
FROM orderdetails
GROUP BY orderNumber
HAVING SUM(quantityOrdered * priceEach) > 60000
ORDER BY SUM(quantityOrdered * priceEach);
+-------------+--------------------------------------------+
| orderNumber | FORMAT(SUM(quantityOrdered * priceEach),2) |
+-------------+--------------------------------------------+
|       10310 | 61,234.67                                  |
|       10287 | 61,402.00                                  |
|       10165 | 67,392.85                                  |
+-------------+--------------------------------------------+
3 rows in set

JUMLAH dan LIMIT MySQL

Katakan anda ingin Untuk mengira jumlah sepuluh produk paling mahal teratas dalam jadual products, anda boleh bertanya pertanyaan berikut:

SELECT SUM(buyprice)
FROM products
ORDER BY buyprice DESC
LIMIT 10;

Laksanakan pernyataan pertanyaan di atas dan dapatkan keputusan berikut -

mysql> SELECT SUM(buyprice)
FROM products
ORDER BY buyprice DESC
LIMIT 10;
+---------------+
| SUM(buyprice) |
+---------------+
| 5983.47       |
+---------------+
1 row in set

ia tidak berfungsi kerana pernyataan SUM dengan fungsi SELECT hanya mengembalikan satu baris dan kekangan klausa LIMIT pada bilangan baris yang akan dikembalikan adalah tidak sah.

Untuk menyelesaikan masalah ini, sila gunakan subkueri berikut:

SELECT FORMAT(SUM(buyprice),2) FROM
(SELECT buyprice
FROM products
ORDER BY buyprice DESC
LIMIT 10) price;

Laksanakan pernyataan pertanyaan di atas dan dapatkan keputusan berikut -

+-------------------------+
| FORMAT(SUM(buyprice),2) |
+-------------------------+
| 958.71                  |
+-------------------------+
1 row in set

Bagaimana pernyataan di atas berfungsi?

  • subquery memilih sepuluh produk paling mahal.
  • Pertanyaan luar mengira jumlah produk pertama 10 harga tertinggi yang dikembalikan daripada subkueri.

MySQL SUM lwn. NULL

Jika tiada baris yang sepadan, fungsi SUM mengembalikan nilai NULL. Kadangkala anda mahu fungsi SUM mengembalikan 0 dan bukannya NULL. Dalam kes ini, fungsi COALESCE boleh digunakan. Fungsi COALESCE menerima dua parameter Jika parameter pertama ialah NULL, parameter kedua dikembalikan, jika tidak, parameter pertama dikembalikan; pernyataan pertanyaan di atas, dapatkan hasil berikut -

SELECT COALESCE(SUM(quantityOrdered * priceEach),0)
FROM orderdetails
WHERE productCode = 'S1_212121';

JUMLAH MySQL dengan penyataan gabungan

mysql> SELECT COALESCE(SUM(quantityOrdered * priceEach),0)
FROM orderdetails
WHERE productCode = 'S1_212121';
+----------------------------------------------+
| COALESCE(SUM(quantityOrdered * priceEach),0) |
+----------------------------------------------+
| 0.00                                         |
+----------------------------------------------+
1 row in set
Anda boleh menggunakan fungsi

dalam pernyataan

untuk menentukan berdasarkan nilai ​dalam keadaan jadual lain untuk mengira jumlah nilai dalam jadual.

SELECTSebagai contoh, untuk mengira jumlah pesanan yang dibatalkan, gunakan penyata berikut: JOINSUM

[Cadangan berkaitan:

tutorial video mysql

]
SELECT FORMAT(SUM(quantityOrdered * priceEach),2) loss
FROM orderdetails
INNER JOIN orders USING(orderNumber)
WHERE status = 'Cancelled'

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penjumlahan medan dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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