導入今日は、MySQL の sum 関数の使い方を紹介します。この関数は、MySQL データベースを操作するときによく使用される関数になっています。この関数は、条件を満たす行の指定された列の合計をカウントします。誰もが知っているはずなので、これについて話すことはありません。この記事では、主にいくつかの小さなケースを使用して、この関数の詳細な理解と、MySQL クエリを実行するときに合計関数を使用して最適化する方法を説明します。 構文解析SUM([DISTINCT] expr) [over_clause]
上記の文章は、MySQL の公式ドキュメントからの関数の説明です。大まかに意味するところを翻訳すると次のようになります。
機能説明この関数を使用する場合、この関数が式の合計をどのように計算するかについて考える必要があります。プログラマーの中には、この関数は条件を満たすすべての行の合計を直接カウントすると考える人もいるかもしれません。この理解は実際には間違ってはいませんが、あまり正確に表現されていないか、動作原理を実際には理解していません。
デモ例次の構造を持つテーブル (Delivery) があるとします。 +-----------------------------+---------+ | 列名 | タイプ | +-----------------------------+---------+ | 配信ID | int | | 顧客 ID | int | | 注文日 | 日付 | | 顧客優先配送日 | 日付 | | 注文金額 | 小数点 | +-----------------------------+---------+ delivery_id はテーブルの主キーです。 このテーブルには、特定の日付に注文し、希望配達日(注文日と同じかそれ以降)を指定した顧客の食品配達情報が保持されます。顧客の予想配達日が注文日と同じ場合、その注文は「即時注文」と呼ばれ、そうでない場合は「計画注文」と呼ばれます。 +-------------+-------------+-------------+----------------------------+--------------+ | 配送 ID | 顧客 ID | 注文日 | 顧客優先配送日 | 注文金額 | +-------------+-------------+-------------+----------------------------+--------------+ | 1 | 1 | 2019-08-01 | 2019-08-02 | 1.23 | | 2 | 5 | 2019-08-02 | 2019-08-02 | 1.01 | | 3 | 1 | 2019-08-11 | 2019-08-11 | 1.09 | | 4 | 3 | 2019-08-24 | 2019-08-26 | 1.00 | | 5 | 4 | 2019-08-21 | 2019-08-22 | 10.00 | | 6 | 2 | 2019-08-11 | 2019-08-13 | 12.09 | +-------------+-------------+-------------+----------------------------+--------------+ 例1 表内のすべての注文の合計金額を計算します。これは非常にシンプルで、一般的な使用方法でもあります。sum() パラメータを使用して列に入力するだけです。上記の文法規則によれば、これは式であるはずです。実際、列も式です。 Deliveryからsum(order_money)を選択します。 例2 小数点第 2 位を保持して、即時注文の割合を取得する SQL クエリを記述します。この構文はほとんど使用されないため、少し難しいかもしれません。しかし、使用したことがあれば、非常に簡単であることがわかります。 まず、特定のタイプの割合を照会しているので、合計を計算する必要があることを理解する必要があります。合計注文合計 1 をカウントし、次に合計インスタント注文合計 1 をカウントし、次に合計インスタント注文合計 1 をカウントし、最後に合計インスタント注文合計 2 をカウントすることができます。後は分割するだけです。しかし、ここでは SQL ステートメントが明示的に必要です。それで、どうやって解決するのでしょうか? ここでは、sum の動作原理を深く理解する必要があります。データを 1 行ずつ読み取り、sum を 1 行ずつ累積していくことを想像できます。sum2 の要約を取得できますか? sum2の合成についてはどうですか? sum2の合成についてはどうですか? sum1 に関しては、テーブル内の行数の合計なので、数えるのは間違いなく簡単です。 解決策1: ラウンドを選択( sum(case の場合 order_date = customer_pref_delivery_date の場合 1、そうでない場合は 0 終了) / カウント(*) * 100, 2 ) としてimmediate_percentage 配送から 解決策2: ラウンドを選択( sum(注文日 = 顧客優先配達日) / カウント(*) * 100, 2 ) としてimmediate_percentage 配送から ここで、合計式が条件を満たすと、1 が返されます。条件を満たすデータの行が読み取られるたびに、合計は 1 ずつ増加します。最終的に、すべてのデータが読み取られると、合計も増加します。したがって、条件を満たす項目の合計数が出てきます。 ソースタイトルはLeetCodeからのものです。 出典: LeetCode リンク: leetcode-cn.com/problems/im… もう一つの良い例がありますので、注意深く解釈することをお勧めします。この機能の使用シナリオを深めます。 https://www.jb51.net/article/207813.htm 要約するMySQL の sum 関数の使い方についてはこれで終わりです。MySQL の sum 関数の使い方についてさらに詳しく知りたい方は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: JavaScriptのクローン作成についての簡単な説明
背景最近、複数のプロジェクトを展開する際に、1 つのドメイン名で複数のプロジェクトにアクセスする方法...
この記事では、Vueカスタムツリーコントロールの使い方を参考までに紹介します。具体的な内容は次のとお...
インデックスの2つの主要なカテゴリ使用されるストレージエンジン: MySQL 5.7 InnoDBク...
Vueバージョンをファイルにコピーして使用します <テンプレート> <!-- カル...
この記事の例では、スライディングブロック効果を実現するための小さなプログラムの具体的なコードを参考ま...
この記事では、centos6.6 で php7 + nginx 環境をインストールする方法について説...
1. 対照的な色を使用します。ここでのコントラストとは、テキストの色と背景色のコントラストを指します...
キャラクター小数点文字番号エンティティ名---未使用空間---スペースバー! ! ---感嘆符「 」...
序文group by と distinctive のパフォーマンス比較について: インターネット上の...
これを理解するおそらく、他のオブジェクト指向プログラミング言語でもthis見たことがあり、これがコン...
通常、Linux プログラムを開発する場合、次の 2 つのオプションがあります。 Linux上で直接...
序文:年末です。データベースを検査する時期ではないでしょうか?一般的に、検査では、パスワードの複雑さ...
以前、https://www.jb51.net/article/205922.htm で、Docke...
目次1. MySQLインデックスの紹介2. MySQLの5種類のインデックスの詳しい説明1. 総合索...
1. Oracle は大規模データベースですが、MySQL は小規模から中規模のデータベースです。O...