【发布时间】:2012-03-15 03:35:41
【问题描述】:
我想根据交易表找出谁的利润最多。 (上榜)
表:交易 +---------------+ |编号 | +---------------+ |购买用户 ID | +---------------+ |销售用户 ID | +---------------+ |金额 | +---------------+ |价格 | +---------------+此表包含有关在两个人之间交换期间发生的交易的信息。 “buy_user_id”是买家,“sell_user_id”是卖家。
“数量”是购买了多少股票,价格是什么价格(美元)。那么营业额就是(金额*价格)。
我想弄清楚哪些用户的利润最高。如果你将总利润减去总亏损,最终结果应该是 0。
例如:
+---+----------+--------+ | # |用户名 |利润 | +---+----------+--------+ | 1 | 13 | +1200 | +---+----------+--------+ | 2 | 52 | +300 | +---+----------+--------+ | 3 | 29 | -500 | +---+----------+--------+ | 4 | 72 | -1000 | +---+----------+--------+建议?
这是一个完整的例子,首先是事务表:
+----+-------------+--------------+--------+------ -+ |编号 |购买用户 ID |销售用户 ID |金额 |价格 | +----+-------------+--------------+--------+------ -+ | 1 | 13 | 72 | 1000 | 0.01 | 13 人为 1000 只股票支付了 10 美元(现在 13 人亏损 10 美元,而 72 人盈利 10 美元) +----+-------------+--------------+--------+------ -+ | 2 | 72 | 13 | 1000 | 1.01 | 72 为 1000 只股票支付了 1010 美元(现在 72 亏损 1000 美元,而 13 盈利 1000 美元) +----+-------------+--------------+--------+------ -+ | 3 | 13 | 72 | 500 | 0.02 | 13 人为 500 只股票支付了 10 美元(现在 72 人亏损 990 美元,而 13 人盈利 990 美元) +----+-------------+--------------+--------+------ -+ | 4 | 72 | 13 | 100 | 5.10 | 72 为 100 只股票支付了 510 美元(现在 72 亏损 1500 美元,而 13 盈利 1500 美元) +----+-------------+--------------+--------+------ -+ | 5 | 29 | 13 | 400 | 1.25 | 29 人为 400 只股票支付了 500 美元(现在 29 人亏损 500 美元,而 13 人盈利 2000 美元)这个例子应该产生这个结果:
+---+----------+--------+ | # |用户名 |利润 | +---+----------+--------+ | 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(), -
好吧,我尝试了很多东西......这很接近,但我不确定如何完成它:SELECT sell_user_id as user_id, SUM(amountprice) as amount, 'sell' as type FROM
transactionsGROUP BY sell_user_id UNION SELECT buy_user_id as user_id, SUM(amountprice) as amount, 'buy' as type FROMtransactionsGROUP BY buy_user_id -
什么是
pair_id?它不在表定义中。 -
不要介意pair_id,它不相关(我删除了它)