Member 11870782 Ответов: 2

Найти недостающие интервалы


Привет,

У меня есть таблица, приведенная ниже. Я хочу найти недостающие интервалы в этих данных. Например, интервал от 2 до 6 отсутствует. Как я могу запросить эти недостающие интервалы в sql или access. Пожалуйста, помогите мне.
SampleID     From   To   Interval
SORC150857      0    2          2
SORC150858      6    8          2
SORC150859      8   10          2
SORC150860     10   12          2
SORC150861     12   14          2
SORC150862     14   16          2
SORC150863     16   18          2
SORC150864     18   20          2
SORC150870     20   22          2


Благодарный вам.
С уважением,
Динеш

Что я уже пробовал:

Я новичок в SQL и попробовал несколько вещей, но не смог добиться успеха.

OriginalGriff

А что вы пробовали?
Где ты застрял?
Что он сделал такого, чего вы не ожидали, или не сделали того, что вы сделали?
Какая помощь вам нужна?

Member 11870782

Я новичок в SQL, но извлекаю интервалы missinhg. Я попытался вычесть От-До, но не смог получить результат. Вот почему я здесь и прошу о помощи

OriginalGriff

Итак, покажите нам, что вы пробовали и что это дало. Покажите нам, что вы ожидали, что он будет генерировать, и что вы пытались сделать с ним, чтобы попасть туда.

В данный момент это выглядит просто как ученик, пытающийся сделать за него домашнее задание! :смеяться:

Member 11870782

Я думаю, вы не в состоянии понять, что я имею в виду. Я сказал, что я новичок и хочу найти решение. Я четко определил, чего именно хочу, но вы все равно говорите, чего я хочу от этого.

OriginalGriff

Нет, я говорю, что мы более чем готовы помочь тем, кто застрял, но это не значит, что мы здесь, чтобы сделать все это для вас! Мы не можем сделать всю работу, вам либо платят за это, либо это часть ваших оценок, и было бы совсем несправедливо, если бы мы сделали все это за вас.

Поэтому нам нужно, чтобы вы сделали работу, и мы поможем вам, когда вы застряли. Это не значит, что мы дадим вам пошаговое решение, которое вы можете сдать!
Начните с объяснения, где вы находитесь в данный момент и каков следующий шаг в этом процессе. Затем расскажите нам, что вы пытались сделать, чтобы этот следующий шаг сработал, и что произошло, когда вы это сделали.

0x01AA

Выполните этот SQL (адаптируйте имя таблицы и имя базы данных к вашей ситуации):

SELECT *
FROM [CPQA].[dbo].[Samples] a
LEFT JOIN [Samples] b on b.[To] = a.[From]
LEFT JOIN [Samples] c on c.[From] = a.[To]

и посмотрите на рисунок в результате. Я думаю, что это даст вам представление о том, как действовать дальше.

2 Ответов

Рейтинг:
2

Maciej Los

Эта проблема хорошо известна как Проблема пробелов и островов[^]. Перейдите по ссылке, чтобы найти способ решить вашу проблему.

Для получения более подробной информации, пожалуйста, смотрите:
SQL пробелов и островов в последовательностях - простой разговор[^]
Острова и пробелы[^]


Рейтинг:
0

Gerry Schmitz

Вы можете видеть, что "размер шага" равен 2.

Создайте таблицу / набор данных со всеми возможными интервалами ("до" или "от") .:
(0)
2
4
6
и т.д.

Затем выполните запрос, выбрав все интервалы из "возможных интервалов", отсутствующих в ваших "образцах".

IN (Transact-SQL) - SQL Server | Microsoft Docs[^]

Есть и другие способы, но этот способ прост и достаточен для "меньших" диапазонов интервалов.

(Если у вас уже есть файл / таблица с "идеальными" интервалами, вы можете использовать ее в качестве источника для "возможных (ступенчатых) интервалов". Это похоже на "обучение" в машинном обучении.)