mysql INNER join返回不返回总结果

jecbmhm3  于 5个月前  发布在  Mysql
关注(0)|答案(3)|浏览(50)

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分。

djmepvbi

djmepvbi1#

将group by与聚合函数ex一起使用。

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. *

字符串
trade_data内部加入symbol上trade_data.symbol = symbol.id group by symbol.id

atmip9wb

atmip9wb2#

mysql中的SUM()给出了结果行中指定列的总和。所以在这里,SUM(price)将给你价格的总和,加上每行的价格值。总和总是一个值,因为你得到一个单行输出。
希望这对你有帮助。

v9tzhpje

v9tzhpje3#

您正在使用AVG()SUM()函数,这就是为什么您会获得单个reord的原因。

The AVG() Function
The AVG() function returns the average value of a numeric column.

The SUM() Function
The SUM() function returns the total sum of a numeric column.

字符串
如果你有多个trade_data.symbol = symbol.id(超过1个id),你可以使用GROUP BY来获得每个id相似的记录的总和和平均值,因为你只有1个相同的symbol.idtrade_data.symbol,你只会得到一个记录。

相关问题