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