Sql 每小时的样本限值

Sql 每小时的样本限值,sql,postgresql,Sql,Postgresql,如何从查询中的每个小时进行查询?我想每小时采样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 这

如何从查询中的每个小时进行查询?我想每小时采样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;
您可以使用行号:


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

对于此类问题,请在问题中包含表格定义。
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;