0
我有一個傳感器,發送的數值爲5分鐘。這與時間戳一起被存儲在表中。我使用下面的代碼在過去24小時內檢索該傳感器的所有值。Ruby on Rails:在過去的24小時內檢索每小時的值
series = sensor.raindata.all(:order => "time_stamp", :conditions => {:time_stamp => Date.today...Date.today+1})
但作爲傳感器,我們每5分鐘更新一次,這是巨大的數據。我如何每小時抽取一個數據點?那就是我需要每小時一個傳感器的值。 (我不需要每小時的平均值,每小時只有一個樣本)
實現此目的最優雅的方法是什麼?是否可以修改上述查詢來獲取這種數據?或者只有這樣做纔是通過後期處理'系列'數組?
感謝 Shaunak
另一種方法是按小時分組後選擇「min(id)」的子選擇;對於PostgreSQL:'select model。* from model where id in(通過date_trunc('hour',time_stamp)從模型組中選擇min(id))by order_stamp'。儘管如此,你不得不爲某些其他數據庫設置「date_trunc」。 – 2012-01-18 22:16:22