In MySQL können Sie die Funktion SUM() verwenden, um die Feldsummierung zu implementieren. Die Syntax lautet „SELECT SUM(DISTINCT expression) FROM table name [WHERE-Klausel];)“.
Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.
In MySQL können Sie die Funktion SUM() verwenden, um die Feldsummierung zu implementieren.
Die Funktion SUM()
wird verwendet, um die Summe einer Reihe von Werten oder Ausdrücken zu berechnen und kann die Summe der angegebenen Feldwerte zurückgeben. Die Syntax von SUM(. )
-Funktion lautet wie folgt: SUM()
函数用于计算一组值或表达式的总和,可返回指定字段值的总和,SUM()
函数的语法如下:
SUM(DISTINCT expression)
SUM()
函数是如何工作的?
SELECT
语句中使用SUM
函数,则SUM
函数返回NULL
,而不是0
。DISTINCT
运算符允许计算集合中的不同值。SUM
函数忽略计算中的NULL
值。我们来看看示例数据库(yiibaidb)中的orderdetails
表。
可以使用SUM()
函数来计算订单编号10100
的总金额,如下查询所示:
SELECT FORMAT(SUM(quantityOrdered * priceEach),2) total FROM orderdetails WHERE orderNumber = 10100;
执行上面查询语句,得到以下结果 -
mysql> SELECT FORMAT(SUM(quantityOrdered * priceEach),2) total FROM orderdetails WHERE orderNumber = 10100; +-----------+ | total | +-----------+ | 10,223.83 | +-----------+ 1 row in set
请注意,FORMAT()
函数用于格式化SUM()
函数的返回值。
当与GROUP BY
子句组合时,SUM()
函数计算GROUP BY
子句中指定的每个分组的总和。
例如,可以使用具有GROUP BY
子句的SUM
函数计算每个订单的总金额,如下所示:
SELECT orderNumber, FORMAT(SUM(quantityOrdered * priceEach),2) total FROM orderdetails GROUP BY orderNumber ORDER BY SUM(quantityOrdered * priceEach) DESC;
执行上面查询语句,得到以下结果 -
+-------------+-----------+ | 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
您可以使用HAVING
子句中在SUM
函数中来根据特定条件过滤结果。例如,您可以计算总订单量,只能选择总金额大于60000
的订单。如下查询语句 -
SELECT orderNumber, FORMAT(SUM(quantityOrdered * priceEach),2) FROM orderdetails GROUP BY orderNumber HAVING SUM(quantityOrdered * priceEach) > 60000 ORDER BY SUM(quantityOrdered * priceEach);
执行上面查询语句,得到以下结果 -
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
假设您想要计算products
表中前十名最昂贵的产品的总和,可以提出以下查询:
SELECT SUM(buyprice) FROM products ORDER BY buyprice DESC LIMIT 10;
执行上面查询语句,得到以下结果 -
mysql> SELECT SUM(buyprice) FROM products ORDER BY buyprice DESC LIMIT 10; +---------------+ | SUM(buyprice) | +---------------+ | 5983.47 | +---------------+ 1 row in set
它不起作用,因为具有SUM
函数的SELECT
语句只返回一行,LIMIT
子句约束要返回的行数无效。
要解决此问题,请使用以下子查询:
SELECT FORMAT(SUM(buyprice),2) FROM (SELECT buyprice FROM products ORDER BY buyprice DESC LIMIT 10) price;
执行上面查询语句,得到以下结果 -
+-------------------------+ | FORMAT(SUM(buyprice),2) | +-------------------------+ | 958.71 | +-------------------------+ 1 row in set
上面语句是怎么运行的?
10
个价格最高的产品的总和。如果没有匹配的行,则SUM
函数返回NULL
值。 有时,您希望SUM
函数返回0
而不是NULL
。 在这种情况下,可以使用COALESCE
函数。COALESCE
函数接受两个参数,如果第一个参数为NULL
,则返回第二个参数,否则返回第一个参数; 参考以下查询语句:
SELECT COALESCE(SUM(quantityOrdered * priceEach),0) FROM orderdetails WHERE productCode = 'S1_212121';
执行上面查询语句,得到以下结果 -
mysql> SELECT COALESCE(SUM(quantityOrdered * priceEach),0) FROM orderdetails WHERE productCode = 'S1_212121'; +----------------------------------------------+ | COALESCE(SUM(quantityOrdered * priceEach),0) | +----------------------------------------------+ | 0.00 | +----------------------------------------------+ 1 row in set
您可以使用SELECT
JOIN
语句中的SUM
SELECT FORMAT(SUM(quantityOrdered * priceEach),2) loss FROM orderdetails INNER JOIN orders USING(orderNumber) WHERE status = 'Cancelled'
SUM()
-Funktion?
SUM
in einer SELECT
-Anweisung verwendet wird, die keine übereinstimmenden Zeilen zurückgibt, gibt die Funktion SUM
NULL, nicht 0
. DISTINCT
-Operator ermöglicht die Berechnung unterschiedlicher Werte in einer Menge. SUM
ignoriert NULL
-Werte in Berechnungen. orderdetails
in der Beispieldatenbank ( yiibaidb) >Tabelle. Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse: 🎜rrreee 🎜Bitte beachten Sie, dass die Funktion FORMAT()
zum Formatieren des Rückgabewerts der Funktion SUM()
verwendet wird. 🎜GROUP BY
-Klausel ergibt SUM()
berechnet die Summe jeder in der GROUP BY
-Klausel angegebenen Gruppe. 🎜🎜Zum Beispiel können Sie die Funktion SUM
mit der Klausel GROUP BY
verwenden, um den Gesamtbetrag jeder Bestellung wie folgt zu berechnen: 🎜rrreee🎜Führen Sie die obige Abfrageanweisung aus und erhalten Sie das folgende Ergebnis: 🎜rrreeeHAVING
-Klausel in SUM verwenden. code>-Funktion zum Filtern von Ergebnissen basierend auf bestimmten Kriterien. Sie können beispielsweise die Gesamtbestellmenge berechnen und nur Bestellungen auswählen, deren Gesamtmenge größer als <code>60000
ist. Die folgende Abfrageanweisung: 🎜rrreee🎜Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse: 🎜rrreeeDie Summe der zehn teuersten Produkte in der Produkttabelle
. Die folgende Abfrage kann gestellt werden: 🎜rrreee🎜Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse -🎜rrreee🎜Es funktioniert nicht denn mit SUMSELECT
-Anweisung der /code>-Funktion nur eine Zeile zurück und die LIMIT
-Klausel beschränkt die Anzahl der zurückzugebenden Zeilen und ist ungültig . 🎜🎜Um dieses Problem zu lösen, verwenden Sie bitte die folgende Unterabfrage: 🎜rrreee🎜Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse -🎜rrreee🎜Wie wird die obige Anweisung ausgeführt? 🎜10
-Produkte mit den höchsten Preisen, die von der Unterabfrage zurückgegeben werden. SUM
gibt den Wert NULL
zurück. Manchmal möchten Sie, dass die Funktion SUM
0
anstelle von NULL
zurückgibt. In diesem Fall kann die Funktion COALESCE
verwendet werden. Die Funktion COALESCE
akzeptiert zwei Parameter. Wenn der erste Parameter NULL
ist, gibt sie den zweiten Parameter zurück, andernfalls wird der erste Parameter zurückgegeben: 🎜rrreee 🎜Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse: 🎜rrreeeSELECT
JOIN Die <code>SUM
-Funktion in einer -Anweisung berechnet die Summe der Werte in einer Tabelle basierend auf Bedingungen, die durch Werte in einer anderen Tabelle angegeben werden. 🎜🎜Um beispielsweise die Gesamtmenge der stornierten Bestellungen zu berechnen, verwenden Sie die folgende Anweisung: 🎜rrreee🎜[Verwandte Empfehlung: 🎜MySQL-Video-Tutorial🎜]🎜Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Feldsummierung in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!