我想根据事务表来找出谁拥有最多的利润。 (顶部列表)使用MySQL创建顶级列表
Table: Transactions +--------------+ | id | +--------------+ | buy_user_id | +--------------+ | sell_user_id | +--------------+ | amount | +--------------+ | price | +--------------+
此表包含有关在两个人之间进行交易时发生的交易的信息。 “buy_user_id”是买方,而“sell_user_id”是卖方。
“金额”是指购买了多少股票,价格是以什么价格(以美元计算)。营业额是(金额*价格)。
我想弄清楚哪些用户的利润最高。如果你把利润总额减去总损耗,最终的结果应该是0
例如为:
+---+---------+--------+ | # | User ID | Profit | +---+---------+--------+ | 1 | 13 | +1200 | +---+---------+--------+ | 2 | 52 | +300 | +---+---------+--------+ | 3 | 29 | -500 | +---+---------+--------+ | 4 | 72 | -1000 | +---+---------+--------+
建议?
下面是一个完整的例子,与事务表第一:
+----+-------------+--------------+--------+-------+ | id | buy_user_id | sell_user_id | amount | price | +----+-------------+--------------+--------+-------+ | 1 | 13 | 72 | 1000 | 0.01 | $10 paid by 13 for 1000 stocks (now 13 has $10 loss while 72 has $10 profit) +----+-------------+--------------+--------+-------+ | 2 | 72 | 13 | 1000 | 1.01 | $1010 paid by 72 for 1000 stocks (now 72 has $1000 loss while 13 has $1000 profit) +----+-------------+--------------+--------+-------+ | 3 | 13 | 72 | 500 | 0.02 | $10 paid by 13 for 500 stocks (now 72 has $990 loss while 13 has $990 profit) +----+-------------+--------------+--------+-------+ | 4 | 72 | 13 | 100 | 5.10 | $510 paid by 72 for 100 stocks (now 72 has $1500 loss while 13 has $1500 profit) +----+-------------+--------------+--------+-------+ | 5 | 29 | 13 | 400 | 1.25 | $500 paid by 29 for 400 stocks (now 29 has $500 loss while 13 has $2000 profit)
这个例子应该产生这样的结果:
+---+---------+--------+ | # | User ID | Profit | +---+---------+--------+ | 1 | 13 | +2000 | +---+---------+--------+ | 2 | 72 | -1500 | +---+---------+--------+ | 3 | 29 | -500 | +---+---------+--------+
什么是完成这一任务的最好方法是什么?这是有道理的吗?
我尝试:
SELECT sell_user_id as user_id, SUM(amount*price) as amount, 'sell' as type
FROM exchange_transactions
GROUP BY sell_user_id
UNION
SELECT buy_user_id as user_id, SUM(amount*price) as amount, 'buy' as type
FROM exchange_transactions
GROUP BY buy_user_id
那么,你有什么尝试?这不是很简单,但也不是很困难。您需要使用'GROUP BY'和一个聚合函数:'SUM()', – 2012-02-24 17:21:42
嗯,我尝试了很多东西......这很接近,但我不知道如何完成它:SELECT sell_user_id as user_id,选择buy_user_id as user_id,SUM(金额*价格)作为金额,'buy'作为类型FROM'交易'GROUP BY buy_user_id – Warz 2012-02-24 17:28:19
什么是'pair_id'?这不在表格定义中。 – 2012-02-24 17:30:34