|
Выбор каждой десятой записи из результата запроса | ☑ | ||
---|---|---|---|---|
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
|
(14) Ну точно wiki:Децимация_(наказание)
|
|||
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 )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |