mysql中sum()函數怎麼用

青灯夜游
發布: 2022-06-17 18:52:19
原創
19363 人瀏覽過

在mysql中,sum()函數用於計算一組值或表達式的總和,語法為“SUM(DISTINCT expression)”,DISTINCT運算子允許計算集合中的不同值。 sum()函數需要配合SELECT語句一起使用,如果在沒有傳回符合行SELECT語句中使用SUM()函數,則SUM()函數會傳回NULL,而不是0;SUM()函數在計算時,會忽略列值為NULL的行。

mysql中sum()函數怎麼用

本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。

mysql sum()函數

#SUM()函數用於計算一組值或表達式的總和,SUM()函數的語法如下:

SUM(DISTINCT expression)
登入後複製
SUM()函數是如何運作的?
參數描述
##expression ##必須項。欄位或公式

    如果在沒有傳回符合行SELECT語句中使用SUM函數,則SUM函數傳回NULL,而不是0。
  • DISTINCT運算子允許計算集合中的不同值。
  • SUM()函數在計算時,會忽略列值為NULL的行。

sum()函數的使用範例為了方便理解,先建立一個學生成績表tb_students_score,學生成績表的資料內容如下所示

mysql> SELECT * FROM tb_students_score;
登入後複製

mysql中sum()函數怎麼用使用sum()函數在tb_students_score 表中計算學生成績的總分

mysql> SELECT SUM(student_score) AS score_sum FROM tb_students_score;
登入後複製

mysql中sum()函數怎麼用#由查詢結果可以看到,SUM() 函數傳回學生的所有成績總和為942。

擴充知識:

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;
登入後複製

執行上面查詢語句,得到以下結果-

+-------------+-----------+
| 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
登入後複製

#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);
登入後複製

執行上面查詢語句,得到以下結果-

mysql中sum()函數怎麼用

MySQL SUM與LIMIT #假設您想要計算products表中前十名最昂貴的產品的總和,可以提出以下查詢:

SELECT SUM(buyprice)
FROM products
ORDER BY buyprice DESC
LIMIT 10;
登入後複製

執行上面查詢語句,得到以下結果-

mysql中sum()函數怎麼用它不起作用,因為具有SUM函數的SELECT語句只會傳回一行,LIMIT子句約束要傳回的行數無效。要解決此問題,請使用下列子查詢:

SELECT FORMAT(SUM(buyprice),2) FROM
(SELECT buyprice
FROM products
ORDER BY buyprice DESC
LIMIT 10) price;
登入後複製

執行上面查詢語句,得到下列結果 -

##上面語句是怎麼運作的?子查詢選擇十大價格最高的產品。外部查詢計算從子查詢傳回的前10個價格最高的產品的總和。 mysql中sum()函數怎麼用

MySQL SUM與NULL

如果沒有符合的行,則SUM函數傳回NULL值。有時,您希望SUM函數傳回0而不是NULL。在這種情況下,可以使用COALESCE函數。 COALESCE函數接受兩個參數,如果第一個參數為NULL,則傳回第二個參數,否則傳回第一個參數; 參考下列查詢語句:

SELECT COALESCE(SUM(quantityOrdered * priceEach),0)
FROM orderdetails
WHERE productCode = 'S1_212121';
登入後複製
執行上面查詢語句,得到下列結果-

【相關推薦:mysql中sum()函數怎麼用mysql影片教學

以上是mysql中sum()函數怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!