2

だから私はダミーの「株式」システムを作成しているこのゲームを持っています.プレーヤーAが20ドルの価値がある物件に50ドルを支払うとします(100%購入)、プレーヤーBがやって来て10ドルを支払います(今プレーヤーAを置く83.3333% でプレーヤー B は 16.6666%)、プレーヤー A がどれだけ稼いだかを計算するにはどうすればよいでしょうか (プレーヤー B が株式を購入するまで彼は 100% 上昇し、それ以降は 83.3333% であるため)。

「購入した」MySql データベース スキーマと、日付列、購入時のプロパティ値、そしてもちろんプレイヤーが支払った $ があり、値を取得するためのクエリを記述する方法を考えるだけで頭が痛くなるので、感謝します任意のポインター。

すべてが非常に難しいのは、すべてのプレーヤーがその物件の別のシェアを購入できるため、プロセスがさらに困難になることです。

4

1 に答える 1

0

これを自動的に実行したい場合に備えて、トリガーが必要ですが、当面は実際のクエリに集中します。2 つのフィールドがあり、1 つは保持されている値を示し、もう 1 つは保持されているパーセンテージを示しているとします (ビジネス ニーズに応じて他のフィールドが存在する可能性があります)。ただし、これら 2 つのフィールドのみを使用した例を示します。

Person | Value | Percentage 

あなたの例のように、Aが50ドル相当の株式を購入するとさらに仮定しましょう

2番目のサブクエリを使用して、独自の集計値に基づいてテーブルを更新するためのあまり推奨されないアプローチを使用するこのクエリを呼び出す必要があります (挿入トリガーが問題ないか、個別に呼び出された後)。ただし、きれいにしたい場合は、2 つのテーブルを更新する必要があります。1 つは株の値を保持し、もう 1 つはパーセンテージを保持します。

CREATE TABLE SHARES (NAME VARCHAR(20), VALUE INTEGER, PERCENTAGE FLOAT);

INSERT INTO SHARES (NAME,VALUE) VALUES ('A',50);

UPDATE SHARES SET PERCENTAGE = VALUE/(SELECT TOTAL_VALUE FROM
                                      (SELECT SUM(VALUE) AS TOTAL_VALUE
                                       FROM SHARES) AS DUMMY)*100;

INSERT INTO SHARES (NAME,VALUE) VALUES ('B',10);

UPDATE SHARES SET PERCENTAGE = VALUE/(SELECT TOTAL_VALUE FROM
                                      (SELECT SUM(VALUE) AS TOTAL_VALUE
                                       FROM SHARES) AS DUMMY)*100;

Fiddle はhttp://www.sqlfiddle.com/#!2/cec38/1/0にあり ます。

于 2013-08-12T00:05:00.680 に答える