mysql では、SUM() 関数を使用してフィールドの合計を実装できます。この関数は、指定されたフィールド値の合計を返します。構文は、「SELECT SUM(DISTINCT 式) FROM テーブル名 [WHERE 句]」です。 ;)」。
このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。
mysql では、SUM() 関数を使用してフィールドの合計を実装できます。
SUM()
この関数は、一連の値または式の合計を計算するために使用され、指定されたフィールド値の合計を返すことができます。 SUM()関数 構文は次のとおりです。
SUM(DISTINCT expression)
SUM()関数はどのように機能しますか?
ステートメントで
SUM 関数が使用されている場合、
SUM 関数は ## を返します。 #NULL
0
の代わりに。
NULL
値を無視します。
テーブルを見てみましょう。 次のクエリに示すように、
関数を使用して注文番号 10100
の合計金額を計算できます: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">SELECT FORMAT(SUM(quantityOrdered * priceEach),2) total FROM orderdetails WHERE orderNumber = 10100;</pre><div class="contentsignin">ログイン後にコピー</div></div>
上記のクエリ ステートメントを実行すると、次の結果が得られます -
mysql> SELECT FORMAT(SUM(quantityOrdered * priceEach),2) total FROM orderdetails WHERE orderNumber = 10100; +-----------+ | total | +-----------+ | 10,223.83 | +-----------+ 1 row in set
FORMAT()
関数は、SUM()# の戻り値をフォーマットするために使用されることに注意してください。 ## 関数。
MySQL 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;
MySQL SUM および HAVING
SUM
関数の60000 を超える注文のみを選択できます。次のクエリ ステートメント -
+-------------+-----------+ | 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
上記のクエリ ステートメントを実行すると、次の結果が得られます -
SELECT orderNumber, FORMAT(SUM(quantityOrdered * priceEach),2) FROM orderdetails GROUP BY orderNumber HAVING SUM(quantityOrdered * priceEach) > 60000 ORDER BY SUM(quantityOrdered * priceEach);
MySQL SUM と LIMIT Calculatemysql> 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
SELECT SUM(buyprice) FROM products ORDER BY buyprice DESC LIMIT 10;
これは機能しません。
SUM 関数を使用した SELECT
ステートメントは 1 行のみを返すため、返される行数に対するLIMIT 句の制約は、返されたものは無効です。
この問題を解決するには、次のサブクエリを使用してください:
mysql> SELECT SUM(buyprice) FROM products ORDER BY buyprice DESC LIMIT 10; +---------------+ | SUM(buyprice) | +---------------+ | 5983.47 | +---------------+ 1 row in set
上記のクエリ ステートメントを実行すると、次の結果が得られます -
SELECT FORMAT(SUM(buyprice),2) FROM (SELECT buyprice FROM products ORDER BY buyprice DESC LIMIT 10) price;
Subquery は、最も高価な製品のトップ 10 を選択します。
外側のクエリは、サブクエリから返された最高価格の上位
10MySQL SUM と NULL
SUM 関数で
NULL ではなく
0 を返したい場合があります。この場合、
COALESCE 関数を使用できます。
COALESCE 関数は 2 つのパラメータを受け入れます。最初のパラメータが
NULL の場合は 2 番目のパラメータが返され、それ以外の場合は最初のパラメータが返されます。次のクエリ ステートメントを参照してください:
+-------------------------+ | FORMAT(SUM(buyprice),2) | +-------------------------+ | 958.71 | +-------------------------+ 1 row in set
上記のクエリ ステートメントを実行すると、次の結果が得られます。
SELECT COALESCE(SUM(quantityOrdered * priceEach),0) FROM orderdetails WHERE productCode = 'S1_212121';
MySQL SUM と接続ステートメント
で SELECT
SUM この関数は、別のテーブルの値で指定された条件に基づいて、テーブル内の値の合計を計算します。
たとえば、キャンセルされた注文の合計金額を計算するには、次のステートメントを使用します:
mysql> SELECT COALESCE(SUM(quantityOrdered * priceEach),0) FROM orderdetails WHERE productCode = 'S1_212121'; +----------------------------------------------+ | COALESCE(SUM(quantityOrdered * priceEach),0) | +----------------------------------------------+ | 0.00 | +----------------------------------------------+ 1 row in set
[関連する推奨事項:
mysql ビデオ チュートリアル ]以上がmysqlでフィールド合計を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。