Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Randomize в MS SQL  [new]
Lisichkin
Member

Откуда:
Сообщений: 468
Добрый день!

Подскажите как вынуть из большой таблицы 10% произвольных данных равномерно размазанных по полю дата.
Что-то
select top 10 random percent * 
from dbo.movement
where [date] between 20090101 and 20091231
19 июн 17, 11:42    [20574046]     Ответить | Цитировать Сообщить модератору
 Re: Randomize в MS SQL  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Недели две назад было. Это у вас чтоли у всех собеседование такое?
19 июн 17, 11:49    [20574060]     Ответить | Цитировать Сообщить модератору
 Re: Randomize в MS SQL  [new]
aleks2
Guest
Lisichkin
Добрый день!

Подскажите как вынуть из большой таблицы 10% произвольных данных равномерно размазанных по полю дата.
Что-то
select top 10 random percent * 
from dbo.movement
where [date] between 20090101 and 20091231


Вам как: быстро, правильно или пофиг как?
19 июн 17, 11:55    [20574077]     Ответить | Цитировать Сообщить модератору
 Re: Randomize в MS SQL  [new]
Lisichkin
Member

Откуда:
Сообщений: 468
Мне нужно создать данные для тестирования, в исходной таблице слишком много данных.
Нашел: https://stackoverflow.com/questions/848872/select-n-random-rows-from-sql-server-table

select top 10 percent * from [yourtable] order by newid()
19 июн 17, 12:00    [20574104]     Ответить | Цитировать Сообщить модератору
 Re: Randomize в MS SQL  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Lisichkin,
можно и так, но это всё равно не "равномерно размазанных по полю дата".
SELECT 	TOP 10 PERCENT
	[rn] = ROW_NUMBER () OVER (PARTITION BY day(Create_date) ORDER BY Create_date),
	Create_date
FROM sys.objects 
ORDER BY RN,NEWID()
19 июн 17, 12:04    [20574120]     Ответить | Цитировать Сообщить модератору
 Re: Randomize в MS SQL  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
  SELECT  *   FROM  dbo.Tablename TABLESAMPLE (10 PERCENT)   WHERE ... 
19 июн 17, 12:11    [20574140]     Ответить | Цитировать Сообщить модератору
 Re: Randomize в MS SQL  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Cammomile,

там ещё в скобках (10 PERCENT ПОЖАЛУЙСТА) надо, иначе не работает
19 июн 17, 12:13    [20574146]     Ответить | Цитировать Сообщить модератору
 Re: Randomize в MS SQL  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7752
Проще выбрать каждую 10 строку при сортировке по дате.
19 июн 17, 12:22    [20574167]     Ответить | Цитировать Сообщить модератору
 Re: Randomize в MS SQL  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
TaPaK, оно берет все строки с N% страниц на которых расположена таблица. Для скорости, как я понимаю.
19 июн 17, 12:31    [20574204]     Ответить | Цитировать Сообщить модератору
 Re: Randomize в MS SQL  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Cammomile
TaPaK, оно берет все строки с N% страниц на которых расположена таблица. Для скорости, как я понимаю.

при этом ни к случайным(можно свободно получить одну дату) ни к равномерно размазанным это не имеет значение, не считая всех остальных радостей этого ограничения
19 июн 17, 12:36    [20574226]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить