mysql列结果选择算法

iszxjhcz  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(346)

我已经得到了这个结果,从我的表为两个基线tqq和sqqq

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

这就产生了这个结果

看起来像这样

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

现在我想减去表中每个日历日的qq。

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

我该怎么做?

frebpwbc

frebpwbc1#

你可以做一个 Group ByTradeDate ,您可以使用 If() 或者 Case .. When 有条件地评估 Sum() 根据 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 ,查询将如下所示:

SELECT 
  TradeDate, 
  (
   SUM(CASE WHEN Stock_Short = "TQQQ" THEN LastPrice * Volume ELSE 0 END) - 
   SUM(CASE WHEN Stock_Short = "SQQQ" THEN LastPrice * Volume ELSE 0 END) 
  ) AS difference 
FROM aktien 
WHERE Stock_Short IN ("TQQQ","SQQQ")
GROUP BY TradeDate 
ORDER BY TradeDate DESC
ubof19bj

ubof19bj2#

从aktien a选择a.stock\u short、a.tradedate、b.stock\u short、a.lastprice、a.volume、b.lastprice、b.volume、(a.volumea.lastprice)-(b.volumeb.lastprice)在a.tradedate=b.tradedate上加入aktien b,其中a.stock\u short='TQQ'和b.stock\u short='sqqq';

puruo6ea

puruo6ea3#

我试过马杜尔的上述解决方案以及沃尔特的解决方案。
我稍微修改了一下

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.029的结果相同。所以稍微长一点。
但我认为这个解决方案的优点是对交易日期的处理。如果其中一个缺少tradedate,则join将忽略此tradedate,而madhurs解决方案仍将计算和/差。
多亏了他们俩!

相关问题