この記事では、MySQL の累積計算の例について説明します。ご参考までに、詳細は以下の通りです。 序文リクエストを受け、製品側はユーザーの成長曲線を分析したいと考えていました。つまり、一定期間内の1日あたりの総人数のリストです。最近の活動の有効性を評価することをお勧めします。この統計 SQL にはまだ時間がかかりました。 MySQL 統計には依然として特定のスキルが必要です。 需要分析
上記の user_info テーブルを見ると、時間ディメンションに基づいて毎日追加された新規ユーザーの数を簡単にカウントできます。 SQL は次のとおりです。 reg_time、count(user_id)、daily_quantity を選択 user_infoより reg_time でグループ化 上記の SQL を使用すると、次のリストを簡単に取得できます。
しかし、これは私たちが望んでいる結果ではありません。必要なのは、前日の合計と今日の純増加などです。つまり、私たちが望むのは:
これは少し難しいので、累積計算を行う必要があります。自己リンク、関数、その他の操作を試しましたが、正しい結果が得られませんでした。この時点では、これを処理するために Java コードを使用すれば完璧であるように思えます。初期値を宣言し、ループして累積して結果を計算する必要があるだけです。 パブリック静的voidメイン(String[] args) { int[] arr = {1, 2, 2, 1}; int[] ints = dailyQuantityArr(0, arr); (int i : ints) の場合 { System.out.println("i = " + i); } } パブリック静的int[] dailyQuantityArr(intベース、int[] dailyIncrQuantity) { int[] 結果 = 新しい int[dailyIncrQuantity.length]; // 充填を累積する for (int i = 0; i < dailyIncrQuantity.length; i++) { ベース += dailyIncrQuantity[i]; 結果[i] = ベース; } 結果を返します。 } 上記の疑似コードで結果を計算できます。もちろん、可能であれば、この複雑な計算を Java ビジネス コードで実行してみてください。ただし、製品の要件は、ビジュアル データ エンジンで必要な回答を直接取得できる SQL ステートメントを提供できることです。そこで私は上記のコードからインスピレーションを得ました。 行番号、ユーザーIDとして (@i:=@i+1) を選択 user_info から、(@i:=0 を選択) を r として MySQL ユーザー変数MySQL 変数は、ローカル変数、ユーザー変数、セッション変数、およびグローバル変数に分けられます。上記のステートメントでは、ユーザー変数を使用します。ユーザー変数はデータベース接続に関連しています。接続で宣言された変数は、ストアド プロシージャで作成された後、データベース インスタンスが切断されるまで消えます。この接続で宣言された変数は別の接続では使用できません。 累積計算にMysqlユーザー変数を使用するユーザー変数について学習した後、累積計算を実行する方法がわかりました。user_info テーブル内の毎日の累積合計人数は次のようになります。 a.reg_timeを選択し、 毎日、 @i:=@i+a.daily を daily_quantity として から(reg_timeを選択、 count(user_id) 日次 ユーザーグループから reg_time ) a 、 (@i:=0 を選択) b クエリ結果は以下のとおりで、論理要件を満たしています。
しかし、ここにはちょっとした落とし穴があります。実際の業務では、初期化時に 要約する今日は、MySQL ユーザー変数を使用して SQL の累積計算の問題を解決しました。他に何か良いアイデアはありますか?ディスカッションのためにメッセージを残してください。 MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL トランザクション操作スキル」、「MySQL ストアド プロシージャ スキル」、「MySQL データベース ロック関連スキルの概要」、および「MySQL 共通関数の概要」 この記事が皆様のMySQLデータベース設計に役立つことを願っています。 以下もご興味があるかもしれません:
|
<<: Tomcat が IDEA のコンソールで文字化けを起こし、IDEA エンコーディングを UTF-8 に設定する方法
コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...
第二に、キーワードのランキングは、Webページの表示速度にも関係しています(参照:キーワードランキン...
アップグレードプロセス:元のシステム: CentOS7.3 [root@my-e450 ~]# un...
これは、VPS サーバー用の一般的なワンクリック パフォーマンス テスト スクリプトです。マシンの構...
前回の記事では、入力完了の簡単な検出を実現しましたが、今回はさらに一歩進んで、入力が完了した後に次の...
現在のトランザクションはどの履歴バージョンを読み取ることができますか?読み取りビューは、トランザクシ...
目次vモデル.sync微妙な違い機能シナリオを要約します。 vモデル <!--親コンポーネント...
ウェブページを作成するときに、フォームを挿入した後、フォームの上下に空白行が表示されることがよくあり...
編集者は最近、macOS システムを使い始めたかったので、VMware に macOS イメージ シ...
ある設計士はこう尋ねた。「実際のプロジェクト制作には参加せずに、純粋に設計だけをすることはできますか...
開発中、優れたユーザー インターフェイスには常にいくつかのアニメーションが組み込まれます。 CSS ...
1. まず、2つ以上の隣接する通常フローブロック要素の垂直マージンの崩壊を引き起こす原因を知る必要が...
目次1. はじめに2. 出力情報の説明3. netstatの共通パラメータ4. netstatネット...
1 ダウンロードアドレスは https://dev.mysql.com/downloads/mysq...
<div align="center"> <table sty...