mysqlでフィールド合計を実装する方法

青灯夜游
リリース: 2022-01-06 14:40:21
オリジナル
23767 人が閲覧しました

mysql では、SUM() 関数を使用してフィールドの合計を実装できます。この関数は、指定されたフィールド値の合計を返します。構文は、「SELECT SUM(DISTINCT 式) FROM テーブル名 [WHERE 句]」です。 ;)」。

mysqlでフィールド合計を実装する方法

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

mysql では、SUM() 関数を使用してフィールドの合計を実装できます。

SUM()この関数は、一連の値または式の合計を計算するために使用され、指定されたフィールド値の合計を返すことができます。 SUM()関数 構文は次のとおりです。

SUM(DISTINCT expression)
ログイン後にコピー

SUM()関数はどのように機能しますか?

    一致する行を返さない
  • SELECT ステートメントで SUM 関数が使用されている場合、SUM 関数は ## を返します。 #NULL 0 の代わりに。
  • DISTINCT
  • 演算子を使用すると、コレクション内の個別の値を計算できます。
  • SUM
  • 関数は、計算で NULL 値を無視します。
  • MySQL SUM() 関数の例

サンプル データベース (yiibaidb) の

orderdetails

テーブルを見てみましょう。 次のクエリに示すように、

SUM()

関数を使用して注文番号 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 句

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

関数の

HAVING

句を使用してフィルタリングできます。特定の条件による結果。たとえば、合計注文数量を計算し、合計金額が

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

Calculate

productsテーブル内の最も高価な製品の上位 10 位の合計を求めると、次のクエリを実行できます:
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
ログイン後にコピー

上記のクエリ ステートメントを実行すると、次の結果が得られます-

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 を選択します。

外側のクエリは、サブクエリから返された最高価格の上位

10
    製品の合計を計算します。
  • MySQL SUM と NULL
一致する行がない場合、

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 = &#39;S1_212121&#39;;
ログイン後にコピー
MySQL SUM と接続ステートメント

SELECT

JOIN

を使用できます。ステートメント

SUM この関数は、別のテーブルの値で指定された条件に基づいて、テーブル内の値の合計を計算します。 たとえば、キャンセルされた注文の合計金額を計算するには、次のステートメントを使用します:

mysql> SELECT COALESCE(SUM(quantityOrdered * priceEach),0)
FROM orderdetails
WHERE productCode = &#39;S1_212121&#39;;
+----------------------------------------------+
| COALESCE(SUM(quantityOrdered * priceEach),0) |
+----------------------------------------------+
| 0.00                                         |
+----------------------------------------------+
1 row in set
ログイン後にコピー
[関連する推奨事項: mysql ビデオ チュートリアル

]

以上がmysqlでフィールド合計を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!