Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询以查找财务事务表中的最大“提款”_Sql_Mysql - Fatal编程技术网

SQL查询以查找财务事务表中的最大“提款”

SQL查询以查找财务事务表中的最大“提款”,sql,mysql,Sql,Mysql,我有一个包含以下列的表: id int(10) winner int(10) profit double created datetime 我试图创建一个查询,返回利润列中最大的下降量,或峰谷下降量。更多 理想情况下,它将返回为提款期的开始和结束所创造的价值,以及从头到尾的利润深度 编辑:利润列不是累积的,但查询需要查找累积提取。提款可能会增加,但一旦累计利润达到新高,提款就结束了。这里有一个例子可以说明这一点。红点和绿点之间的X距离是最大下降量。我不是mySQL向导,所以如果我犯了错误,请原

我有一个包含以下列的表:

id int(10)
winner int(10)
profit double
created datetime
我试图创建一个查询,返回利润列中最大的下降量,或峰谷下降量。更多

理想情况下,它将返回为提款期的开始和结束所创造的价值,以及从头到尾的利润深度


编辑:利润列不是累积的,但查询需要查找累积提取。提款可能会增加,但一旦累计利润达到新高,提款就结束了。这里有一个例子可以说明这一点。红点和绿点之间的X距离是最大下降量。

我不是mySQL向导,所以如果我犯了错误,请原谅我。但是,如果没有其他连接条件,并且是整个表,那么我认为这可能适合您:

select a.created as starttime
     , b.created as endtime
     , a.profit as startprofit
     , b.profit as endprofit
     , b.profit - a.profit as depth
  from your_table a
  join your_table b
    on a.created < b.created
 order by b.profit - a.profit
 limit 1

在阅读了这个链接之后,我真的不理解缩编的要求。如果这意味着,显示最大的不间断价值下跌,其中不间断意味着在下跌期间没有临时反弹,那么类似的东西可能会起作用:

select top 1 p1.Created as Created1, p2.Created as Created2, p1.profit as p1, p2.profit as p2, p1.profit - p2.profit as Downfall
from profit p1
inner join profit p2 on p1.profit > p2.profit 
    and p2.Created > p1.Created
    and not exists (
        select 1 
        from profit p1a
        inner join profit p2a on p1a.Created < p2a.Created
            and p1a.profit < p2a.profit
        where p1a.Created >= p1.Created
            and p2a.Created <= p2.Created
    )
order by Downfall desc

如果您的目标是获得连续最大的不间断下降,您只需执行以下操作:

设置@max_压降=0; 选择MINifprofit<0、@max\u drawdown:=@max\u drawdown+利润、@max\u drawdown:=0作为按日期从您的\u表订单中提取的最大金额;

因此,如果你有这个例子:

date, profit 1, -1 2, -13 3, 3 4, -7 5, -2 6, -2 7, -9 8, 0 9, -15
你将得到-20。

你如何定义高收入?您能给出一些示例数据并显示哪些数据点包含在缩图中吗?我添加了一个链接到一个图像,该图像显示了一个折线图,这样应该更容易理解。 date, profit 1, -1 2, -13 3, 3 4, -7 5, -2 6, -2 7, -9 8, 0 9, -15