Heim > Datenbank > MySQL-Tutorial > So implementieren Sie die Feldsummierung in MySQL

So implementieren Sie die Feldsummierung in MySQL

青灯夜游
Freigeben: 2022-01-06 14:40:21
Original
23848 Leute haben es durchsucht

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];)“.

So implementieren Sie die Feldsummierung in MySQL

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)
Nach dem Login kopieren

SUM()函数是如何工作的?

  • 如果在没有返回匹配行SELECT语句中使用SUM函数,则SUM函数返回NULL,而不是0
  • DISTINCT运算符允许计算集合中的不同值。
  • SUM函数忽略计算中的NULL值。

MySQL SUM()函数示例

我们来看看示例数据库(yiibaidb)中的orderdetails表。

可以使用SUM()函数来计算订单编号10100的总金额,如下查询所示:

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

执行上面查询语句,得到以下结果 -

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

请注意,FORMAT()函数用于格式化SUM()函数的返回值。

MySQL SUM与GROUP BY子句

当与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;
Nach dem Login kopieren

执行上面查询语句,得到以下结果 -

+-------------+-----------+
| 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
Nach dem Login kopieren

MySQL SUM与HAVING

您可以使用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);
Nach dem Login kopieren

执行上面查询语句,得到以下结果 -

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
Nach dem Login kopieren

MySQL SUM与LIMIT

假设您想要计算products表中前十名最昂贵的产品的总和,可以提出以下查询:

SELECT SUM(buyprice)
FROM products
ORDER BY buyprice DESC
LIMIT 10;
Nach dem Login kopieren

执行上面查询语句,得到以下结果 -

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

它不起作用,因为具有SUM函数的SELECT语句只返回一行,LIMIT子句约束要返回的行数无效。

要解决此问题,请使用以下子查询:

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

执行上面查询语句,得到以下结果 -

+-------------------------+
| FORMAT(SUM(buyprice),2) |
+-------------------------+
| 958.71                  |
+-------------------------+
1 row in set
Nach dem Login kopieren

上面语句是怎么运行的?

  • 子查询选择十大价格最高的产品。
  • 外部查询计算从子查询返回的前10个价格最高的产品的总和。

MySQL SUM与NULL

如果没有匹配的行,则SUM函数返回NULL值。 有时,您希望SUM函数返回0而不是NULL。 在这种情况下,可以使用COALESCE函数。COALESCE函数接受两个参数,如果第一个参数为NULL,则返回第二个参数,否则返回第一个参数; 参考以下查询语句:

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

执行上面查询语句,得到以下结果 -

mysql> SELECT COALESCE(SUM(quantityOrdered * priceEach),0)
FROM orderdetails
WHERE productCode = 'S1_212121';
+----------------------------------------------+
| COALESCE(SUM(quantityOrdered * priceEach),0) |
+----------------------------------------------+
| 0.00                                         |
+----------------------------------------------+
1 row in set
Nach dem Login kopieren

MySQL SUM与连接语句

您可以使用SELECT JOIN语句中的SUM

SELECT FORMAT(SUM(quantityOrdered * priceEach),2) loss
FROM orderdetails
INNER JOIN orders USING(orderNumber)
WHERE status = 'Cancelled'
Nach dem Login kopieren
Wie funktioniert die SUM()-Funktion?

  • Wenn die Funktion SUM in einer SELECT-Anweisung verwendet wird, die keine übereinstimmenden Zeilen zurückgibt, gibt die Funktion SUM NULL, nicht 0.
  • Der DISTINCT-Operator ermöglicht die Berechnung unterschiedlicher Werte in einer Menge.
  • Die Funktion SUM ignoriert NULL-Werte in Berechnungen.

MySQL SUM()-Funktionsbeispiel

Werfen wir einen Blick auf den orderdetailsin der Beispieldatenbank ( yiibaidb) >Tabelle.

Sie können die Funktion SUM() verwenden, um den Gesamtbetrag der Bestellnummer 10100 zu berechnen, wie in der folgenden Abfrage gezeigt: rrreee

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. 🎜

🎜MySQL SUM mit der GROUP BY-Klausel 🎜

🎜In Kombination mit der 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: 🎜rrreee

MySQL SUM vs HAVING

🎜Sie können die HAVING-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: 🎜rrreee

🎜MySQL SUM und LIMIT🎜

🎜Angenommen, Sie möchten Berechnen Sie Die 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? 🎜
  • Unterabfrage wählt die zehn teuersten Produkte aus.
  • Die äußere Abfrage berechnet die Summe der Top-10-Produkte mit den höchsten Preisen, die von der Unterabfrage zurückgegeben werden.

🎜MySQL SUM und NULL🎜

🎜Wenn es keine passende Zeile gibt, funktioniert die Funktion 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: 🎜rrreee

MySQL SUM und Verbindungsanweisung

🎜Sie können SELECT 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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage