この記事では、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 に設定する方法
ヒント: MySQL では、ユーザーの作成と削除が頻繁に必要になります。ユーザーを作成するときは、通...
1. 背景1. vSphere の共有ストレージの背景を簡単に紹介するvSphere の重要な機能は...
目次1. 環境2. 準備3. MySQL 8.0.11をインストールするMySQL 8 の公式バージ...
目次1. インストール1. はじめに3. インターフェースルートアドレス4. 使用例4.1 ダウンロ...
現在、プロジェクトの要件により、フォームの送信を制御し、送信前にデータを検証および処理するために j...
目次必要回避策1. ツールチップを設定する2. hookToolTip変数を定義する3. メソッド内...
CSS変数の知識を使って、追加したコードとコメントを直接投稿します <!DOCTYPE htm...
目次1. はじめに2. 直接回復2.1 mysqldumpバックアップの完全リカバリ2.2 xtra...
導入定期的にヘルスチェックを送信して、アップストリーム グループ内の HTTP サーバーのヘルスを監...
ktl ツールを使用して、mysql から mysql にデータを同期します。 1. 新しいジョブス...
まず、MySQLをskip-grant-tablesモードで起動します: mysqld --skip...
1. maxPostSize を設定する理由は何ですか? tomcat コンテナには送信データのサイ...
この記事では、参考までにMySQL 5.7.13 winx64のインストールと設定方法のグラフィック...
CentOS 8 がリリースされてから随分経ちました。Linux 仮想マシンをいじっている人間として...
目次データ列を分離するプレフィックスインデックスとインデックスの選択性データ列を分離するMySQL ...