導入今日は、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. コンテナライフサイクル管理(1)ドッカー実行(2)スタート/ストップ/リスタート(3)ドッ...
最近、Microsoft は Docker をネイティブにサポートする Windows Server...
かなり前の記事で、 -webkit-box-reflectプロパティについて説明しました。リフレクシ...
メインライブラリの構成1. MySQLを設定する vim /etc/my.cn # ファイルに次の内...
1. 2 列レイアウトとは何ですか? 2 列レイアウトには、左側が固定幅で右側が適応幅のレイアウトと...
一言で言えば: データハイジャック (Object.defineProperty) + パブリッシュ...
1. まず、node、express、express-generator をインストールします (4...
1. まずファイルを作成します(ファイルを配置するディレクトリにcdします) myTest.py を...
<br />関連記事: Facebookの情報アーキテクチャの分析 元記事: http:...
vue+element UI は Excel データをエクスポートするためのパブリック関数をカプセル...
テーブル user があり、フィールドは id、nick_name、password、email、p...
序文Linux グループは、Linux でユーザー アカウントを管理するために使用される組織単位です...
1: mysql公式サイトからダウンロードhttps://dev.mysql.com/downlo...
序文:最近、プロジェクトで管理システムに遭遇しました。権限設定が非常に興味深いと思いました。自分の学...
1. ディスプレイボックス;要素にこのプロパティを設定すると、display:inline-bloc...