选择条件在 SQL 中的每第 n 行

Selecting every nth row with a condition in SQL

这似乎是一个概念上很简单的问题,但没有直接的答案。

我有一些时间紧迫的数据,event_ID 变量给出了一大堆(数百万)独特事件,描述了一组(几个)物理属性(phys_props)。

我正在写 SQL 并希望 return 为这个时间序列数据集的每第 n 行(我可以自由选择 n 为例如 5、1000、10000 等) .

但是,如果n=1000 并且给定物理 属性 的记录少于 1000 条,我根本不想 return 那里的 event_ID 记录。

类似于:

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

是我的起点。

你可以给每行一个唯一编号,然后对唯一编号进行计算。像这样

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

select * from t where SN%100=0

您可以尝试这样的操作:

SELECT * FROM 
(SELECT EVENT_ID,  
       @rownum := @rownum + 1 AS rank
FROM myTable, 
       (SELECT @rownum := 0) r
) ds
WHERE MOD(rank, 5) = 0
;

你可以试试这个:

         Select * from myTable
         Having mod(count(*), 1000)=0