РАЗБИЕНИЕ НА скользящий или окружающий период в один месяц

#sql #sql-server #window-functions

#sql #sql-сервер #окно-функции

Вопрос:

Мне нужно использовать

 PERCENT_RANK() OVER(PARTITION BY monthperiod ORDER BY probability ASC) AS  Rank 
  

Следующий код является частью более крупного запроса, и он близок, но если я получу дату, близкую к началу месяца, я полагаю, что она будет сравниваться с остальной частью месяца вместо двух недель до и двух недель после.

 SELECT
    *, 
    PERCENT_RANK() OVER (PARTITION BY monthperiod ORDER BY probability ASC) AS Rank
FROM
    (SELECT
         *,
         FLOOR(DATEPART(MONTH, [Date]) / 2) AS MonthPeriod,
         CONCAT(YEAR([Date]), DATEPART(MONTH, [Date])) YearMonth
     FROM 
         database.schema.table AS t) monthperiod
WHERE
    ISNULL(Rank, 1) >= 0.90
  

Вероятность результатов должна быть ранжирована по тому, как эта вероятность соответствует всем идентификаторам в этом groupId в текущем месяце (две недели после и две недели до). Вот почему ранг отличается, даже если вероятности могут быть.

 ID  GroupID Date    Probability Rank
--------------------------------------
8403    581 7/12/2018   0.75     0.98 
2679    581 7/12/2018   0.85     0.99 
5899    581 7/12/2018   0.95     1.00 
7902    960 8/15/2019   0.85     0.98 
3659    960 8/15/2019   0.75     0.96 
1406    960 8/15/2019   0.95     1.00 
8241    125 9/23/2020   0.95     0.96 
3240    125 9/23/2020   0.75     0.90 
4074    125 9/23/2020   0.85     0.92 
  

Простите меня, если это окажется простым. Я сделал столько поисков и варьировал свой поиск, сколько мог, и не нашел решения. Я все еще новичок в SQL, поэтому, если у кого-то более опытного есть творческое решение, это было бы здорово.

Комментарии:

1. Привет, было бы действительно полезно, если бы вы могли добавить несколько строк данных и из них получить желаемый результат, и, пожалуйста, не добавляйте изображения, добавьте их в виде текста, чтобы можно было скопировать и примерить их среду.

2. Также [Date] является синтаксической ошибкой, если вы не живете в Microsoft. (и: select *, красный флаг)

3. в чем проблема, которую вы пытаетесь решить?

4. В настоящее время я добавляю образцы данных. Пожалуйста, вернитесь и проверьте! @JorgeCampos

5. Я думаю о рангах как о целых числах, а не о соотношениях. Можете ли вы пояснить, что такое вычисление?