Выбор каждой n-й строки с условием в SQL - PullRequest
0 голосов
/ 18 октября 2018

Это кажется концептуально простым вопросом, но без однозначного ответа.

У меня есть данные, требующие много времени, с целой кучей (миллионов) уникальных событий, заданных переменной event_ID, описывающих набор (из нескольких) физических свойств (phys_props).

Я пишу SQL и хочу возвращать каждую n-ю строку (где у меня есть свобода выбора, например, 5, 1000, 10000 и т. Д.) Для этого набора данных временного ряда.

Однако, если, например, n = 1000 и для данного физического свойства меньше 1000 записей, я вообще не хочу возвращать туда записи event_ID.

Что-то вроде:

SELECT * 
FROM myTable
WHERE MOD(myTable, 1000) = 0 

- моя отправная точка.

Ответы [ 3 ]

0 голосов
/ 18 октября 2018

Вы можете попробовать что-то вроде этого:

SELECT * FROM 
(SELECT EVENT_ID,  
       @rownum := @rownum + 1 AS rank
FROM myTable, 
       (SELECT @rownum := 0) r
) ds
WHERE MOD(rank, 5) = 0
;
0 голосов
/ 18 октября 2018

Вы можете попробовать это:

         Select * from myTable
         Having mod(count(*), 1000)=0
0 голосов
/ 18 октября 2018

вы можете дать уникальный номер каждой строке, а затем выполнить расчет по уникальному номеру.Как то так

with t as(    
select *,row_number() over (order by event_ID) SN from the_table_name
)

select * from t where SN%100=0
...