powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / subset in set
9 сообщений из 9, страница 1 из 1
subset in set
    #39572327
Igor0000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vsem privet. Est takie dannie,

Код: sql
1.
2.
		select * from 
	(values (1, 10),(6, 8) , (11, 15), (12, 14), (6, 10), (2, 4)) as t(a, b)



nado sgrupirovat takim obrazom chto subset popadaet v odnu gruppu k setu. seti ne peresekajutsa, subseti mogut peresekatsa, no ne mogut vihodit za diapazon seta

dolgno puluchitsa

a, b, groupID
1 10, 1
2 4 1
8 8 1
6 10 1
11 15 2
12 14 2

spasibo
...
Рейтинг: 0 / 0
subset in set
    #39572391
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
select
    t.a, t.b, t.a/10+1 as groupID
from 
    (values (1, 10),(8, 8),(11, 15),(12, 14),(6, 10),(2, 4),(21,7),(25,10)) as t(a, b)
order by
    3
...
Рейтинг: 0 / 0
subset in set
    #39572393
Igor0000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ne rabotaet, "a" ne kratno 10. V primere znachenie (16, 17) dolgno obrazovat' novuu gruppu

Код: sql
1.
2.
3.
4.
5.
6.
select
    t.a, t.b, t.a/10+1 as groupID
from 
    (values (1, 10),(8, 8),(11, 15),(12, 14),(6, 10),(2, 4),(21,7),(25,10), (16, 17)) as t(a, b)
order by
    3
...
Рейтинг: 0 / 0
subset in set
    #39572398
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor0000,

выход моего решения соответствует приведённому вами "dolgno puluchitsa"
либо нормально описывайте правила определения ваших "seti, subseti", либо не совокупляйте людям мозг...
...
Рейтинг: 0 / 0
subset in set
    #39572399
Igor0000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ja tak ponimaju vi propustili vecherniy onanizm i teper vam ploho? soboleznuu. Dannie prosto dla primera, kluchevoe eto
"nado sgrupirovat takim obrazom chto subset popadaet v odnu gruppu k setu. seti ne peresekajutsa, subseti mogut peresekatsa, no ne mogut vihodit za diapazon seta"
spasibo vi svobodni
...
Рейтинг: 0 / 0
subset in set
    #39572417
Igor0000,

правильно поставленный вопрос содержит в себе половину ответа.....
опиши ты свою задачу как "объединение пересекающихся [диапазонов | интервалов]" - и даже поиск по форуму вывалили бы тебе кучу решений..... :) ;)
А так, своими сетами и субсетами, только ввёл народ в заблуждение.

Версию сервера ты не озвучил, поэтому буду считать, что она у тебя не ниже 2012... И тогда твоя задача решается таким вот элементарным запросом:
Код: 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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
--
-- Твой набор тестовых данных, начало:
with
  t (a,b) as 
    (
      select * 
        from (
               values 
                 (1, 10),(6, 8) , (11, 15), (12, 14), (6, 10), (2, 4)
             ) as t(a, b)
    )
-- Твой набор тестовых данных, кончало...
--
-- Один из возможных вариантов решения поставленной тобой задачи, начало:
select a, b
     , sum(sog) over(order by a,b) as grp_id
  from (
         select a, b
              , case 
                  when max(b) over(order by a, b 
                                    rows between unbounded preceding
                                                     and 1 preceding
                                  ) >= a
                  then 0 
                  else 1 
                end as sog 
           from t
       ) v0
-- Один из возможных вариантов решения поставленной тобой задачи, кончало
--
-- Примерный вид результирующего множества:

 a      b    grp_id
---    ---   ------
  1     10        1
  2      4        1
  6      8        1
  6     10        1
 11     15        2
 12     14        2
...
Рейтинг: 0 / 0
subset in set
    #39572418
желтым выделил то, что не взлетит на версиях, ниже 2012....
...
Рейтинг: 0 / 0
subset in set
    #39572659
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эхжелтым выделил то, что не взлетит на версиях, ниже 2012....
ROWS BETWEEN - тоже с 2012 только взлетает...
...
Рейтинг: 0 / 0
subset in set
    #39572906
Igor0000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх , spasibo, vash variant resenija vsako luchshe moego

Код: 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.
with cte as
(
	select * from 
	(values (1, 10), (6, 8) , (11, 15), (12, 14), (6, 10), (2, 4), (2, 9), (20, 21), (17, 17)) as t(a, b)
)

select 
	t.a, 
	t.b,
	sum(case when b.a is null then 1 else 0 end) over (order by t.a, t.b) GroupID
from 
	cte t
	left join 
	(
		select distinct
			c.a, c.b
		from 
			cte c, cte c1
		where 
		   (c.a between c1.a and c1.b
			or c.b between c1.a and c1.b)
			and c.a !=c1.a and c.b!=c1.b
	) b on t.a = b.a and t.b = b.b
order by 1, 2
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / subset in set
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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