Я работаю над структурой данных со списком положительных или отрицательных результатов для каждого человека.Последовательный подсчет результата записи
Пример данных (идентификатор является тождеством):
id person result
1 1 0
2 1 1
3 1 1
4 2 1
5 2 0
6 1 1
7 1 0
8 2 0
9 2 0
10 2 0
С этим я хотел бы рассчитывать на максимальное количество consecutive
result = 1
для каждого человека. В результате в этом примере будет
person max_count
1 3
2 1
Я попытался с помощью ROW_NUMBER() OVER (PARTITION BY)
как этот
SELECT person,
ROW_NUMBER() OVER (PARTITION BY person, result ORDER BY id) AS max_count
FROM TABLE
, но это дает мне accumulative
подсчет вместо consecutive
одного.
Что делать, чтобы выполнить последовательный подсчет? Любой намек был бы оценен. Заранее спасибо
Подсказка: 'пробелы и острова'. Что такое версия SQL Server? Я думаю, что могу написать окончательный запрос, но одно неясно. Почему 'max_count' для человека' 1' является '2'? На основе вашего образца это должно быть '3', нет? Строки с идентификаторами: '2,3,6'. Строки '4,5' для разных людей, я думаю, их следует игнорировать, не так ли? Или вас интересует строгая последовательная последовательность, где идентификаторы ** должны быть в последовательности без пробелов? Если вы добавите еще несколько строк в образец, которые объяснят разные варианты, это поможет понять, что вам нужно. –
@ Владимир Баранов, вы правы. Я сделал ошибку в вопросе. Сейчас это исправит. – ydoow