#0
by VVi3ard
Есть отсортированый набор номеров: 1,2,3,4,7,8,12,14,15 и.т.д. Нужно с помощью запроса найти "дырки" в этом наборе. т.е. 5,6,9,10,11,13. Не обязательно все сразу, достаточно если будет выодится первая попавшаяся "дырка".
#1
by VVi3ard
Пока эта задачка решается перебором в цикле но имхо это не красиво а вот как красиво я не могу придумать и мне эта недодуманая мысль покоя не дает :(
#5
by VVi3ard
2AversDik2 - Красиво :) Только возникает вопрос где взять полный набор номеров... например диапазон от 1 до 9999999999. Но в любом случае решение красивое :)
#8
by VVi3ard
2КонецЦикла Я например не знаю способа получить SQL запросом диапазон чисел. Сталкивался с похожей проблемой для дат там частично помогала конструкция "Периодами" в 8.1 при запуске системы можно формировать виртуальную таблицу и потом ей пользоватья но у меня к сожалению пока 8.0
#11
by VVi3ard
2AversDik2 для 9999999999 мне больше понравился совет evd правда решение нельзя назвать тривиальным но рмботает классно. Спасибо :)
#15
by masky
select select count(N2.id) - N1.id from t as N1, t as N2 where N2.id <= N1.id group by N1.id ) as N(i,gp) group by gp order by low,high
#16
by masky
select m, min(n) nMin, max(n) nMax from (select m, n, n-(select count(distinct n) from t tt where tt.m=t.m and tt.n<t.n) e from t) z group by m, e
#17
by masky
select t1.id as mn, t2.id as mx from t t1, t t2 where not exists (select tt1.id from t tt1 where tt1.id = t1.id - 1) and not exists (select tt2.id from t tt2 where tt2.id = t2.id + 1) and t2.id - t1.id in (select count(*) - 1 from t where t.id between t1.id and t2.id) order by t1.id, t2.id
#22
by Vbif
ты запросы то проверял? в запросе 16 конструкция "select count(distinct n) from t tt where tt.m=t.m and tt.n<t.n" отматерит по полной, пиши уж корректно, неламо
#26
by ДрДрТартл
то есть вы предлагаете вбить в справочник всю линейку цифр, а потом по коду находить дырки??? поясните пожалуста структуру справочника проба
#27
by Кащей
Проба - это просто справочник, на котором тестировались дырки (дырки - это разрыв в нумерации справочника)
#30
by Кащей
цитирую : Не обязательно все сразу, достаточно если будет выодится первая попавшаяся "дырка". Этот запрос решает немного другую задачу - определить какой должен быть номер при сплошной нумерации. Заодно и показывает, с какого момента возникла дырка
#32
by ДрДрТартл
если исходить из цитата: "Не обязательно все сразу, достаточно если будет выодится первая попавшаяся "дырка"." то да, Вы совершенно правы. А вот бы придумать запрос который выводил все пропущенные номера
#36
by Кащей
Понял нестыковку. Нужно выводить значения дырок, а я показываю элементы, которые "не на местах". В принципе с учетом задача поиска "дырок" решена, но не в постановке
#39
by Кащей
когда в два столбика было - получался готовый интервал дырок с "код1" по "код" не включая концы интервала.
#41
by Vbif
Если в постановке тогда модифицируем и получаем первую дырку ВЫБРАТЬ ПЕРВЫЕ 1 НомерИзНабора + 1 Из НАБОР ГДЕ НомерИзНабора + 1 Не В (Набор) а вот как выбрать все дырки? и именно дырки, а не начало и оконачние дырки и т.п.
#42
by Кащей
Есть частные решения, когда заведомо известно, что ширина максимальной дырки меньше количества элементов выборки
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- v7: ЗиК 275: как учитывать годовые премии при расчете среднего для БЛ
- Как влияет магнит на сотовый телефон?
- Как найти соответсвия таблиц в базе SQL объектам метаданных в конфигурации?
- Выгрузка данных запроса в ТаблицуЗначений // колонки таблицы значений
- v7: v8: Загрузка элементов справочника в группу
- Учет себестоимости и расчет прибыли оказанных услуг в УТ 10.2 (сложно)
- Как выделить сразу несколько элементов справочника
- v7: Удалить строку из таблицы значений
- Вызов процедуры формы документа
- Как присвоить списку значений определённый тип
- С каким максимальный размером базы 7-ки SQL вы работали?
- Поиск номенклатуры с одинаковым артикулом ТиС
- Операция не может быть выполнена из-за несоответствия версии или отсутствия
- Обратный цикл в 1с
- Где хранить важность заявки?
- 1С 8.1 - Регламентные задания
- v7: Реквизит неопределенный типа на форме
- v7: ЗИК: Как (и откуда) загрузить классификатор ОКСО (специальности)?
- в терминальном режиме более одного пользователя в 1С работать не могут
- И снова мобильное приложение...