我试图查询某一天内每小时完成的调查。 调查表是这样的:
id (SERIAL) - 用户ID (INTEGER) - 说明 - timeTaken (带时区的时间戳)
3 ; 1; "some random description"; "2015-01-17 04:30:24.983576-05"
5 ; 2; "sample about x"; "2015-01-17 04:30:24.983576-05"
7 ; 3; "survey about ducks"; "2015-01-17 05:30:24.983576-05"
基本上对于给定的一天,比如3月1日,我希望得到所有调查行按照他们拍摄的时间分组,即下午1点的7行,下午2点的3行,等等。但我不确定是否它可以在pg上这样分组,或者我应该在客户端做到这一点。
上面数据的编辑:将id 3和5分组在4以下,id 7分组为5.基本上我想显示按完成时间分隔的数据。 感谢
答案 0 :(得分:1)
您可以使用date_part仅提取小时,您可以在group by子句中使用该小时。请参阅http://www.postgresql.org/docs/9.4/static/functions-datetime.html。
答案 1 :(得分:0)
在postgresql中使用extarct函数
以下示例数据
id userid descp timetaken
-- ------ ----------------------- ---------------------------
1 1 some random description 2015-01-17 15:00:24.9835760
2 2 sample about x 2015-01-17 15:00:24.9835760
3 3 survey about ducks 2015-01-17 16:00:24.9835760
4 3 survey about ducks 2015-01-01 19:00:24.9835760
5 3 survey about ducks 2015-01-01 16:00:24.9835760
6 3 survey about ducks 2015-01-01 19:00:24.9835760
我需要按日期01-01-2015
select extract(hour from timetaken) survey_hour
,count(*) survey_count
from sur
where timetaken::date ='2015-01-01'
group by survey_hour