我从表格中得到两个下标TQQQ和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
现在我想在表格中的每个日历日减去TQQQ-SQQQ。
2018-10-30 -30,204,847
2018-10-29 etc ...
我该怎么做?
答案 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解决方案仍将计算总和/差。
感谢双方!