Имя: Пароль:
1C
1С v8
Выбор каждой десятой записи из результата запроса
,
0 1ctube
 
15.05.23
17:54
Всем привет. Можете подсказать как выбрать из результата запроса каждую десятую запись? Например если записей 600, то выбирается каждая десятая запись, получается результат 60
1 Kesim
 
15.05.23
17:57
(0) а в чем проблема то при переборе выборки счетчик до 10, при достижении записывай в тз например, счетчик сбрасывай
2 1ctube
 
15.05.23
17:58
(1) так записи по порядку будут идти в цикле? А нужно каждую десятую запись
3 inkvizitr
 
15.05.23
18:01
(1) (2) так выгрузи результат запроса в ТЗ и обращайся по индексу, к каждой 10 записи и с помощью цикла соберешь свою ТЗ
4 RomanYS
 
15.05.23
18:03
(0)
Атономерзаписи() как номер

...
где номер-10*Цел(номер/10)=1
5 Волшебник
 
15.05.23
18:10
(0) Используй остаток от деления на 10, например,

Если N % 10 = 0 Тогда
   // каждая 10 запись
КонецЕсли;
6 Garykom
 
гуру
15.05.23
18:11
(0) децимация?
а сортировка какая?
7 PR
 
15.05.23
18:11
И никто не спросил, нахрена ТС эта хренатень
8 Garykom
 
гуру
15.05.23
18:12
по умолчанию порядок выдачи записей SQL не определен
если специально не упорядочивать
9 Garykom
 
гуру
15.05.23
18:12
(7) ну видать база провинилась - хочет каждую десятую того...
10 Garykom
 
гуру
15.05.23
18:14
начать транзакцию
цикл
...
ВЫБРАТЬ ПЕРВЫЕ 10
...
удалить
...
конец цикла
...
отменить транзакцию

// :)
11 Волшебник
 
15.05.23
18:17
(7) Может хочет распределить массив на 10 роботов, чтобы обработка была равномерной.

Или хочет получить срез средних записей из каждого периода.

Или хочет каждому участнику форума прикрутить новогоднюю пиктограмму. Я как раз так делал.
12 Lama12
 
15.05.23
18:31
(0) Видимо я чего-то не понимаю. Реляционные базы возвращают результат запроса не гарантируя порядок записей в результате, совпадающим с порядком в БД. Почему нельзя просто выбрать первые 10% от общей выборки?
13 Волшебник
 
15.05.23
18:55
(12) А как эту выборку тщательно перемешать?
14 1ctube
 
15.05.23
19:00
(7) в отчёт должен попадать каждый десятый сотрудник от общей численности)
15 1ctube
 
15.05.23
19:00
Благодарю за ответы, буду пробовать
16 Волшебник
 
15.05.23
19:09
17 Chai Nic
 
15.05.23
19:24
Интересно, а есть ли в СУБД возможность ORDER BY RANDOM?
18 TormozIT
 
гуру
15.05.23
19:25
(4) Это придется сначала во временную таблицу поместить и нельзя будет объединение использовать. Кстати правильнее будет сначала минимум от этого поля искать и только потом уже брать остаток от деления разности поля с его минимумом.
19 Жан Пердежон
 
15.05.23
19:25
20 PR
 
15.05.23
20:06
(14) А, ну понятно, что нихрена непонятно
Важна ли случайность выборки?
Нужна ли повторяемость?
Чем не устраивает штатная возможность СКД вывести 10% от выборки данных?
21 Гена
 
гуру
15.05.23
20:40
(4) Глянул Автономерзаписи() - полезная приблуда, как раз для данного случая.
22 Chai Nic
 
15.05.23
20:59
(19) Если сделать select rand(),* from <...>, то rand() будет одинаковым для всех строк (хотя и разным для разных запусков запроса), соответственно нельзя по нему сортировать, нет смысла. Нормального рандома, который бы выдавал случайное число в каждой строке, в sql нет, как я понимаю.
23 Chai Nic
 
15.05.23
21:18
+(22) Кажется, нашел способ. Можно сделать случайный порядок выборки, если использовать "order by newid()". Эта функция генерит уникальный идентификатор для каждой строки.
24 PR
 
15.05.23
21:25
(23) А что, уникальный идентификатор такой уж прямо хрен пойми какой выдастся, прямо случайный случайный, каждый раз совершенно непредсказуемая сортировка?
25 Garykom
 
гуру
15.05.23
21:56
(23) а интересная идея
взять УНИКАЛЬНЫЙИДЕНТИФИКАТОР в строку его, из него подстроку случаную, затем отсортировать по подстроке
затем ПЕРВЫЕ Всего/10 даст искомое
26 Fram
 
16.05.23
02:42
Кто то понял что означает "десятый сотрудник от общей численности" из (14)?
27 Fram
 
16.05.23
02:42
Первые 60 и дело с концом раз нет четких критериев
28 Chai Nic
 
16.05.23
05:24
(24) Это да. Никакой гарантии равномерного распределения новых идентификаторов никто не дает, но на практике - они достаточно случайные, для задач не связанных с криптографией и матстатистикой.
29 АгентБезопасной Нацио
 
16.05.23
07:01
(14) первые (или последние) 10% сотрудников по алфавиту - это тоже 1/10 от общей численности.
30 Fish
 
16.05.23
09:40
(26) Децимация же. См. (16)
31 Garykom
 
гуру
16.05.23
09:59
эх времена
раньше казнили каждого десятого - а сейчас только увольняют...
32 Гена
 
гуру
16.05.23
10:25
Не увольнение это. Хайли лайкли похоже на очковтирательство. Когда кто-то не очень умный, но шибко активный из головного офиса запросил не просто количество сотрудников филиала, присутствовавших на какой-то лекции а-ля "Есть ли жизнь на Марсе", но и их ФИО. Вот и напрягли программиста сходу выдавать подобный список ~60 из 600 )
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс