|
Вычитание диапазонов в запросе | ☑ | ||
---|---|---|---|---|
0
d546
10.08.21
✎
11:45
|
Есть исходный диапазон 1-99
Есть еще два 15-30 и 47-52, которые надо вычесть Должно получить 1-14, 31-46, 53-99 Как это собрать в запросе? |
|||
1
Малыш Джон
10.08.21
✎
11:53
|
(0) >>Как это собрать в запросе?
По-тупому или по-умному? |
|||
2
Галахад
гуру
10.08.21
✎
11:56
|
О чем вообще речь?
|
|||
3
d546
10.08.21
✎
11:57
|
(1) По умному
вычитаемых диапазонов может быть несколько, но они точно не пересекаются |
|||
4
d546
10.08.21
✎
12:24
|
(2) Есть таблица остатков диапазонов и есть еще одна таблица с диапазонами, на которые надо уменьшить диапазоны остатка
|
|||
5
Малыш Джон
10.08.21
✎
12:42
|
(4) в каком виде таблицы?
|
|||
6
d546
10.08.21
✎
12:43
|
ВЫБРАТЬ
1 КАК Начало, 99 КАК Конец ПОМЕСТИТЬ Полный ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ 15 КАК Начало, 30 КАК Конец ПОМЕСТИТЬ Исключение ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 47, 52 ; |
|||
7
d546
10.08.21
✎
12:43
|
В таком виде
|
|||
8
Малыш Джон
10.08.21
✎
13:10
|
(7)
Что то типо такого, НО!! граничные случаи не предусматривал и пересекающихся отрезков тоже, лень думать: ВЫБРАТЬ 1 КАК Начало, 99 КАК Конец ПОМЕСТИТЬ Полный ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ 15 КАК Начало, 30 КАК Конец ПОМЕСТИТЬ Исключение ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 47, 52 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ Исключение.Конец + 1 КАК Начало ПОМЕСТИТЬ ВТ_НачалаОтрезков ИЗ Исключение КАК Исключение ОБЪЕДИНИТЬ ВЫБРАТЬ Полный.Начало ИЗ Полный КАК Полный ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Исключение.Конец ПОМЕСТИТЬ ВТ_КонцыОтрезков ИЗ Исключение КАК Исключение ОБЪЕДИНИТЬ ВЫБРАТЬ РАЗЛИЧНЫЕ Полный.Конец ИЗ Полный КАК Полный ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_НачалаОтрезков.Начало КАК Начало, МИНИМУМ(ВТ_КонцыОтрезков.Конец) КАК Конец ПОМЕСТИТЬ ВТ_НаложениеОтрезков ИЗ ВТ_НачалаОтрезков КАК ВТ_НачалаОтрезков ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КонцыОтрезков КАК ВТ_КонцыОтрезков ПО ВТ_НачалаОтрезков.Начало < ВТ_КонцыОтрезков.Конец СГРУППИРОВАТЬ ПО ВТ_НачалаОтрезков.Начало ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_НаложениеОтрезков.Начало КАК Начало, ВЫБОР КОГДА Исключение.Начало ЕСТЬ NULL ТОГДА ВТ_НаложениеОтрезков.Конец ИНАЧЕ Исключение.Начало - 1 КОНЕЦ КАК Конец ИЗ ВТ_НаложениеОтрезков КАК ВТ_НаложениеОтрезков ЛЕВОЕ СОЕДИНЕНИЕ Исключение КАК Исключение ПО ВТ_НаложениеОтрезков.Конец = Исключение.Конец УПОРЯДОЧИТЬ ПО Начало |
|||
9
d546
10.08.21
✎
13:15
|
Супер, спасибо большое
|
|||
10
Малыш Джон
10.08.21
✎
14:08
|
(9) не обольщайся, судя по всему, задача учебная, а значит попросят объяснить, как оно работает
|
|||
11
d546
10.08.21
✎
14:23
|
не учебная, мне нужна была идея
в голове появлялись начало и конца отрезка, но никак не могу сформировать мысль до конца |
|||
12
acanta
10.08.21
✎
21:29
|
К сожалению, не могу представить себе вот это на постгресе..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |