Максимальное количество последовательных торговых праздников из таблицы даты / календаря - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь найти максимальное количество последовательных торговых выходных в таблице «Торговая дата / календарь». У меня есть флаг isTradingHoliday = 1 в таблице TradingDate, который обозначает даты, являющиеся торговыми выходными, в противном случае isTradingHoliday = 0. Как узнать, какой диапазон дат был самым последовательным торговым праздником в этой таблице TradingDate?

1 Ответ

3 голосов
/ 28 октября 2019

Это звучит как проблема пропусков и островков. Вы можете найти первую дату и количество дней, используя разницу номеров строк. Остальное - агрегация и фильтрация:

select top (1) with ties min(tradingdate) as startdate,
       max(tradingdate) as enddate
from (select c.*,
             row_number() over (order by tradingdate) as seqnum,
             row_number() over (partition by isTradingHoliday order by tradingdate) as seqnum_h
      from calendar c
     ) c
where isTradingHoliday = 1
group by isTradingHoliday, (seqnum - seqnum_h)
order by count(*) desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...