在SQL

时间:2018-10-18 18:30:55

标签: mysql sql join mod

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

我有一些非常耗时的数据,由event_ID变量给出了一整堆(数百万)唯一事件,描述了一组(几种)物理属性(phys_props)。

我正在编写SQL,并想为该时间序列数据集返回每n行(我可以自由选择n为5、1000、10000等)。

但是,例如n = 1000,给定物理属性的记录少于1000条,我根本不希望返回event_ID记录。

类似:

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

是我的出发点。

3 个答案:

答案 0 :(得分:1)

您可以为每行赋予唯一编号,然后对唯一编号进行计算。像这样

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

select * from t where SN%100=0

答案 1 :(得分:0)

您可以尝试以下操作:

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

答案 2 :(得分:0)

您可以尝试以下方法:

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