每小时的样品限制

时间:2018-05-21 21:20:52

标签: sql postgresql

如何从查询中的每个HOUR查询?我想在每个HOUR中抽取5条记录,但我不知道该怎么做。我知道我可以通过硬编码小时手动完成,但我想用一个查询来做。输出类似于

hour | location
00      SF
00      DC
00      VW
01      SF
01      HI
01      KK
02      JP
02      RU
02      CN
...    ...
...    ...
23      JK
23      ON
23      CN

这是我到目前为止所做的:

select hour, location
from db.table where
     hour in ('00', '01', '02','03', '04','05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16','17', '18', '19','20', '21', '22','23') 
order by hour
limit 3;

1 个答案:

答案 0 :(得分:1)

您可以使用row_number()

select t.*
from (select t.*,
             row_number() over (partition by year, month, day, hour order by random()) as seqnum
      from db.table t
     ) t
where seqnum <= 5;

我不确定yearmonthday列与您的问题有什么关系。它们不是样本数据的一部分。如果您只想要一天,请在查询中使用where子句。