Rumah >pangkalan data >tutorial mysql >Bagaimana untuk melaksanakan penjumlahan medan dalam mysql
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]. ;)".
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?
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. 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()
.
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
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
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?
10
harga tertinggi yang dikembalikan daripada subkueri. 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 setAnda boleh menggunakan fungsi
SELECT
Sebagai contoh, untuk mengira jumlah pesanan yang dibatalkan, gunakan penyata berikut: JOIN
SUM
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!