在sql中每n行选择一个条件

gr8qqesn  于 2021-06-19  发布在  Mysql
关注(0)|答案(3)|浏览(365)

这似乎是一个概念上简单的问题,但没有直接的答案。
我有一些时间严肃的数据,有一大堆(数百万)由event\u id变量给出的唯一事件,描述了一组(几个)物理属性(phys\u props)。
我正在编写sql,并希望为这个时间序列数据集返回每n行(在这里我可以自由选择n,例如5、1000、10000等)。
但是,如果n=1000,并且给定物理属性的记录少于1000条,我根本不想返回那里的事件id记录。
比如:

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

这是我的出发点。

4zcjmb1e

4zcjmb1e1#

你可以给每一行一个唯一的no,然后对唯一的no进行计算

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

select * from t where SN%100=0
wn9m85ua

wn9m85ua2#

您可以尝试以下方法:

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

6fe3ivhb3#

你可以试试这个:

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

相关问题