trade_data表
id symbol action price percent
1 1购买3.4 50
2 1卖出3.8 25
3 2卖出45 75
3 2买25.2 50
符号表
id名称
1个区域协调委员会
2 REG
SELECT SUM( IF( trade_data.action = 'BUY', price, 0 ) ) AS 'BUYSUM',
SUM( IF( trade_data.action = 'SELL', price, 0 ) ) AS 'BUYSELL',
AVG( trade_data.percent ) AS peravg, symbol. *
FROM `trade_data`
INNER JOIN `symbol` ON trade_data.symbol = symbol.id
字符串
这个查询给我一行,但有两行在此条件下可用。但当我改变查询为
SELECT trade_data.* , symbol. *
FROM `trade_data`
INNER JOIN `symbol` ON trade_data.symbol = symbol.id
型
然后这个查询给了我精确的2分。
3条答案
按热度按时间djmepvbi1#
将group by与聚合函数ex一起使用。
字符串
从
trade_data
内部加入symbol
上trade_data.symbol = symbol.id group by symbol.idatmip9wb2#
mysql中的
SUM()
给出了结果行中指定列的总和。所以在这里,SUM(price)将给你价格的总和,加上每行的价格值。总和总是一个值,因为你得到一个单行输出。希望这对你有帮助。
v9tzhpje3#
您正在使用
AVG()
和SUM()
函数,这就是为什么您会获得单个reord的原因。字符串
如果你有多个
trade_data.symbol = symbol.id
(超过1个id),你可以使用GROUP BY
来获得每个id相似的记录的总和和平均值,因为你只有1个相同的symbol.id
和trade_data.symbol
,你只会得到一个记录。