Найдите наибольшее количество последовательных вхождений значений в таблице

У меня есть следующая таблица

create table Launches (Id int, Name char)

insert into Launches values
(1, 'A'),
(2, 'A'),
(3, 'B'),
(4, 'B'),
(5, 'B'),
(6, 'B'),
(7, 'C'),
(8, 'B'),
(9, 'B')

Результат должен быть

4 - Б

От 3 до 6

Аналогичный вопрос -

Подсчитайте количество последовательных вхождений значений в таблице

Что вы пробовали? Где ты застрял? Пожалуйста, покажите нам свои исследования и попытки.

Dale K 24.12.2020 00:40

Вопрос, на который вы ссылаетесь, говорит вам, как это сделать?

Dale K 24.12.2020 00:50

Это не так, потому что он не сообщает, где начинается и заканчивается самая большая последовательная последовательность. В моем реальном случае буква «В» повторяется много раз во многих местах, и без индексов я не могу локализовать самую большую последовательность.

Joe Jobs 26.12.2020 10:45
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
3
3
368
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

select top (1) name, count(*), min(id), max(id)
from (select l.*,
             row_number() over (partition by name order by id) as seqnum
      from #Launches l
     ) l
group by (id - seqnum), name
order by count(*) desc;

Здесь db<>рабочий пример.

Это отличный сценарий! Однако для меня одинаково важно знать первый и последний индекс - 3 и 6 в этом примере

Joe Jobs 24.12.2020 00:46

@Джобс. . . Просто включите это в select.

Gordon Linoff 24.12.2020 00:47

Я понятия не имею, как это сделать, правда

Joe Jobs 24.12.2020 01:06

@JoeJobs Гордан уже сделал это за вас — проверьте его правки. Тем не менее, похоже, что вы могли бы получить больше пользы от изучения некоторых учебных пособий по SQL и изучения основ, потому что наверняка люди ответят на ваши вопросы здесь, но вы не приобретете навыки, чтобы сделать это самостоятельно.

Dale K 24.12.2020 01:10

Спасибо, я не могу отредактировать ответ, это должно быть «Запуски» вместо «#Запуски».

Joe Jobs 24.12.2020 01:58

В нем говорится, что я должен изменить как минимум 6 символов, чтобы иметь возможность сохранить его. И да, я проголосовал за ответ. Мне сказали подождать несколько дней, прежде чем я приму ответ, чтобы побудить больше пользователей ответить на вопрос.

Joe Jobs 24.12.2020 02:28

«Ой! Ваш ответ не может быть отправлен, потому что: правки должны содержать не менее 6 символов; есть ли что-то еще, что можно улучшить в этом посте?»

Joe Jobs 24.12.2020 02:30

@Джобс. . . Я не понимаю. В вопросе используется #Launches. Код в скрипке немного отличается, но изменить имя таблицы в запросе несложно.

Gordon Linoff 24.12.2020 03:14

Плохо, я скопировал из другого вопроса, теперь я заменил #Launches на Launches в вопросе. Символ "#" все усложняет, без него лучше. Я просто хотел убедиться, что копирование кода в этой скрипке работает без изменений.

Joe Jobs 24.12.2020 03:19

Другие вопросы по теме