用sql求三个数的最大值

 

-- 没见别人这样用,但起码可以达到目的,不知道有没简单的方法,不想建表。 
select   @data_end_tag = max (tag)  from  
select   @end_tag_ctc1   as  tag 
union   select   @end_tag_ctc2   as  tag 
union   select   @end_tag_cnc1   as  tag  union   select   @end_tag_cnc2   as  tag) t
最大回撤是指在一段时间内,投资组合净值曲线的最高点和最低点之间的最大损失。为了在 SQL 中计算最大回撤,需要进行以下步骤: 1. 创建一个包含投资组合净值的表。 2. 使用 SQL 窗口函来计算每个时间点的最大净值。 例如,假设你的表名为 portfolio,其中包含三列:date(日期),value(净值)和ticker(投资组合代码)。下面是计算最大净值的 SQL 代码: ``` SELECT date, ticker, value, MAX(value) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS max_value FROM portfolio ``` 在上述代码中,使用了 MAX 和 OVER 函来计算每个时间点之前的最大净值。PARTITION BY 用于按 ticker 对净值进行分组,ORDER BY 用于按日期排序,ROWS BETWEEN 用于定义窗口的范围。 3. 计算每个时间点的回撤。 接下来,需要使用上述代码中计算的最大净值来计算每个时间点的回撤。回撤等于当前净值与之前最大净值的差值除以最大净值。下面是计算回撤的 SQL 代码: ``` SELECT date, ticker, value, max_value, (max_value - value) / max_value AS drawdown FROM ( SELECT date, ticker, value, MAX(value) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS max_value FROM portfolio ) t ``` 在上述代码中,计算了回撤并将其命名为 drawdown。 4. 计算最大回撤。 最后,将回撤按 ticker 分组并找到最大值即可计算最大回撤。下面是计算最大回撤的 SQL 代码: ``` SELECT ticker, MIN(drawdown) AS max_drawdown FROM ( SELECT date, ticker, value, max_value, (max_value - value) / max_value AS drawdown FROM ( SELECT date, ticker, value, MAX(value) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS max_value FROM portfolio ) t ) t2 GROUP BY ticker ``` 在上述代码中,使用 MIN 函找到每个 ticker 的最大回撤。GROUP BY 用于按 ticker 分组。 以上是计算最大回撤的 SQL 代码。请注意,这些代码可能需要根据你的具体情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值