powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Длины непрерывных последовательностей
8 сообщений из 8, страница 1 из 1
Длины непрерывных последовательностей
    #39786054
HornetBlack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, как решить следующую задачу?

Из выборки:

item1
item1
item2
item2
item2
item2
item1
item3
item3

получить выборку с длиной непрерывных последовательностей:

item1 2
item2 4
item1 1
item3 2
...
Рейтинг: 0 / 0
Длины непрерывных последовательностей
    #39786058
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак, потому что нет поля, определяющего порядок последовательности.
...
Рейтинг: 0 / 0
Длины непрерывных последовательностей
    #39786064
HornetBlack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хорошо, а если начальная выборка будет с порядковыми номерами?

1 item1
2 item1
3 item2
4 item2
5 item2
6 item2
7 item1
8 item3
9 item3
...
Рейтинг: 0 / 0
Длины непрерывных последовательностей
    #39786072
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HornetBlack,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
WITH I AS 
(
	SELECT ID, Val FROM 
	(
		SELECT 1 AS ID,'item1' AS Val UNION ALL
		SELECT 2 AS ID,'item1' AS Val UNION ALL
		SELECT 3 AS ID,'item2' AS Val UNION ALL
		SELECT 4 AS ID,'item2' AS Val UNION ALL
		SELECT 5 AS ID,'item2' AS Val UNION ALL
		SELECT 6 AS ID,'item2' AS Val UNION ALL
		SELECT 7 AS ID,'item1' AS Val UNION ALL
		SELECT 8 AS ID,'item3' AS Val UNION ALL
		SELECT 9 AS ID,'item3' AS Val 
	) A
),
I2 AS
(
	SELECT 
		Id,
		Val,
		RN1 = ROW_NUMBER() OVER (PARTITION BY Val Order BY ID),
		RN2 = ROW_NUMBER() OVER (Order BY ID)
	FROM I
)
SELECT Val, COUNT(*) FROM I2
GROUP BY Val, RN2 - RN1
ORDER BY MIN(ID)
...
Рейтинг: 0 / 0
Длины непрерывных последовательностей
    #39786089
HornetBlack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a_voronin,

Я изучал похожий пример с последовательностями дат, но там порядковый номер вычитался из даты и это давало параметр для группировки окна, а в моем случае я не мог понять, как получить этот параметр, теперь буду знать )
Большое спасибо за помощь.
...
Рейтинг: 0 / 0
Длины непрерывных последовательностей
    #39786493
HornetBlack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a_voronin,

Извините за назойливость, а если чуть более сложная начальная выборка:

1 group1 item1
2 group1 item1
3 group1 item2
4 group1 item2
5 group1 item2
6 group1 item2
1 group2 item2
2 group2 item1
3 group2 item1
4 group2 item1
5 group2 item3
6 group2 item3

и получить:

group1 item1 2
group1 item2 4
group2 item2 1
group2 item1 3
group2 item3 2
...
Рейтинг: 0 / 0
Длины непрерывных последовательностей
    #39786500
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HornetBlacka_voronin,

Извините за назойливость, а если чуть более сложная начальная выборка:ну и суйте в партинш-кляузу аналитического ров-нумбера оба два поля, которые определяют вашу группу уникально...
...
Рейтинг: 0 / 0
Длины непрерывных последовательностей
    #39786512
HornetBlack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна,

Спасибо, похоже, я так и сделал ) Тут дело не только в подсчете длины групп, но и в том, чтобы не потерять их порядок. Вроде получилось.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Длины непрерывных последовательностей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]