對不起,如果這是混亂,因爲我不是很熟悉postgresql。我有一個表格充滿了「網站」的postgres數據庫。每個站點報告約一小時一次,當它的報告,它使在此表中的條目,比如:如何從時間戳表中選擇每小時一行數據?
site | tstamp
-----+--------------------
6000 | 2013-05-09 11:53:04
6444 | 2013-05-09 12:58:00
6444 | 2013-05-09 13:01:08
6000 | 2013-05-09 13:01:32
6000 | 2013-05-09 14:05:06
6444 | 2013-05-09 14:06:25
6444 | 2013-05-09 14:59:58
6000 | 2013-05-09 19:00:07
正如你所看到的,時間戳是幾乎從來沒有在最前端,有時只有幾分鐘/秒的時間內會有兩次或更多次。此外,有些網站一次不會報告幾小時(有時)。我只想每個站點每小時選擇一個條目(儘可能接近每個小時)。我怎樣才能以有效的方式去做這件事?我還需要將此擴展到其他時間範圍(例如,每個站點每天有一個條目 - 儘可能接近午夜)。
謝謝你的任何和所有的建議。
@BLuFeNiX:這個!對於幾個小時或其他時間間隔,使用['date_trunc('hour',tstamp)'](http://www.postgresql.org/docs/current/interactive/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC)。 [Here](http://stackoverflow.com/questions/12623358/group-by-data-intervals/12624551#12624551)和[here](http://stackoverflow.com/questions/12730072/truncate-timestamp-to - 任意間隔/ 12731753#12731753)是任意間隔的相關答案。 – 2013-05-09 21:31:43
@ErwinBrandstetter:我怎麼能把「小時」和「日期」混淆?奇怪的是,大腦,手指和眼睛有時生活在不同的世界。 – 2013-05-09 21:37:20
@ muistooshort:謝謝!你的第一個查詢工作正常,但速度很慢。有關如何加快速度的建議?在第二個查詢中,我在row_number()上發生錯誤。此外,這個查詢最終將被分頁,這是否重要? – BLuFeNiX 2013-05-10 16:50:27