mysql INNER join返回不返回总结果

jecbmhm3  于 2024-01-05  发布在  Mysql
关注(0)|答案(3)|浏览(115)

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

  1. SELECT SUM( IF( trade_data.action = 'BUY', price, 0 ) ) AS 'BUYSUM',
  2. SUM( IF( trade_data.action = 'SELL', price, 0 ) ) AS 'BUYSELL',
  3. AVG( trade_data.percent ) AS peravg, symbol. *
  4. FROM `trade_data`
  5. INNER JOIN `symbol` ON trade_data.symbol = symbol.id

字符串
这个查询给我一行,但有两行在此条件下可用。但当我改变查询为

  1. SELECT trade_data.* , symbol. *
  2. FROM `trade_data`
  3. INNER JOIN `symbol` ON trade_data.symbol = symbol.id


然后这个查询给了我精确的2分。

djmepvbi

djmepvbi1#

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

  1. 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的原因。

  1. The AVG() Function
  2. The AVG() function returns the average value of a numeric column.
  3. The SUM() Function
  4. 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,你只会得到一个记录。

相关问题