2

所以我有这个游戏,我正在创建一个虚拟的“股权”系统,假设玩家 A 支付 50 美元购买价值 20 美元的房产(购买 100%),然后玩家 B 出现并支付 10 美元(现在让玩家 A在 83.3333% 和玩家 B 为 16.6666%)我如何计算玩家 A 赚了多少(因为他得到了 100% 直到玩家 B 购买了股票,从那时起是 83.3333%)。

我有一个“购买”的 MySql 数据库架构以及日期列、购买时的财产价值,当然还有玩家支付的美元,只是想着如何编写查询来获取这些值让我的大脑受伤,所以我会很感激任何指针。

让一切变得非常棘手的是,每个玩家都可以购买另一份财产,这使得这个过程更加困难。

4

1 回答 1

0

您需要的是一个触发器,以防您希望自动完成此操作,但目前我将专注于实际查询。因此,假设您有两个字段,一个表示持有值,另一个表示持有百分比(其他字段,根据业务需要可以存在),但让我向您展示仅使用这两个字段的示例

Person | Value | Percentage 

让我们进一步假设,根据您的示例,A 购买了价值 50 美元的股票

您需要调用(在插入触发器之后可能很好,或单独调用)此查询,该查询使用不那么推荐的方法通过使用第二个子查询根据自己的聚合值更新表。但是,如果您想将其清理干净,则需要更新两个表,一个将保存份额的值,第二个将保存百分比。

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;

小提琴位于http://www.sqlfiddle.com/#!2/cec38/1/0 希望这会有所帮助。

于 2013-08-12T00:05:00.680 回答