具有列结果的MYSQL选择算术

时间:2018-10-31 10:37:45

标签: mysql select

我从表格中得到两个下标TQQQ和SQQQ的结果

select TradeDate, Stock_Short, LastPrice*Volume as USDVolume from aktien 
where Stock_Short ="TQQQ" OR Stock_Short = "SQQQ" order by TradeDate desc

给出此结果

Result

看起来像这样

2018-10-30  SQQQ     1131165621.6
2018-10-30  TQQQ     1100960774.12
2018-10-29  SQQQ     996285358.9
2018-10-29  TQQQ     1263999527.63
2018-10-26  SQQQ     831584079.95
2018-10-26  TQQQ     1496815364.75
2018-10-25  SQQQ     608926709.68

现在我想在表格中的每个日历日减去TQQQ-SQQQ。

2018-10-30 -30,204,847
2018-10-29 etc ...

我该怎么做?

3 个答案:

答案 0 :(得分:3)

  • 您可以在Group By上进行TradeDate,并且可以使用If()Case .. When根据{{1 }}值。
  • 最终,您可以简单地使用有条件的求和值来计算差异。

尝试以下查询:

Stock_Short

使用SELECT TradeDate, ( SUM(IF(Stock_Short = "TQQQ", LastPrice * Volume, 0)) - SUM(IF(Stock_Short = "SQQQ", LastPrice * Volume, 0)) ) AS difference FROM aktien WHERE Stock_Short IN ("TQQQ","SQQQ") GROUP BY TradeDate ORDER BY TradeDate DESC ,查询如下:

Case .. When

答案 1 :(得分:1)

选择a。股票空头,a。交易日期,b。股票空头,a.lastprice,a.volume,b.lastprice,b.volume,(a.volume * a.lastprice)-(b.volume * b.lastprice )从aktien a中加入aktien b到a.TradeDate = b.TradeDate,其中a.Stock_Short ='TQQQ'和b.Stock_Short ='SQQQ';

答案 2 :(得分:0)

我尝试了Madhur的上述解决方案以及Walter的解决方案。

我已经对其进行了轻微的修改

SELECT a.TradeDate,(a.lastprice*a.Volume) - (b.lastprice*b.Volume) as USDflow 
from aktien a join aktien b on a.TradeDate = b.TradeDate where a.Stock_Short =    
'TQQQ' and b.Stock_Short = 'SQQQ' order by TradeDate desc ;

这给出了与Madhurs花费0.029s进行查询相同的结果。因此稍长。

但是我认为此解决方案的优点是对TradeDate的处理。 如果缺少一个TradeDate,则JOIN将忽略该TradeDate,而Madhurs解决方案仍将计算总和/差。

感谢双方!