SQL Сумма Макс 5 - PullRequest
       22

SQL Сумма Макс 5

0 голосов
/ 07 февраля 2020

Я пытаюсь что-то отфильтровать из таблицы. Результат должен включать [time], [para1], [para2] ..... [win rate], [sum of top 5 PL] ..... и другие. Тем не менее, я не знаю, как закодировать [сумма 5 лучших PL]. Я был бы очень рад, если кто-то здесь может помочь. Заранее спасибо

SELECT
    ([Time]/500)*500 as [Time]
        ,[Para1]
      ,[Para2]
       ,SUM([PL]) as [Total Profit]
      ,AVG([PL]) as [AVERAGE]
      ,COUNT(*) as [Record Count]
      ,SUM(CASE WHEN [PL]>0 THEN 1 ELSE 0 END) as [WinCount]
      ,CAST (SUM(CASE WHEN [PL]>0 THEN 1 ELSE 0 END) as float) / CAST( COUNT(*)  AS float) as [WINRATE]
      ,MIN([PL]) as [MaxDrawdown]
      ,MAX([PL]) as [MaxProfit]
      ,***************I dunno what to write here*********** [sum of top 5 PL]
      ,AVG(ABS(PL)) as [Average Change]


  FROM [BackTest].[dbo].[HSI_SMA_VB]
  GROUP BY 
        [Para1]
      ,[Para2]
      ,([Time]/500)*500
  HAVING COUNT(*) >= 30

ORDER BY [Average] DESC

1 Ответ

0 голосов
/ 07 февраля 2020

Вы можете использовать следующие для подведения итогов 5 PL.

SELECT SUM(top_count)
FROM (
    SELECT TOP(5) PL as top_count
    FROM test order by top_count desc
) as t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...