3
我有一個表格功能,它有一個名爲sample_time的datetimetz字段和一個名爲amp_hours的列。如何查詢每一天的最後一條記錄
amp_hours字段每兩分鐘獲得一條記錄,並在午夜每晚重置。
我想看看sample_time和amp_hours爲每天的最後記錄。
我對SQL很陌生,所以我可能忽略了一個明顯的答案。
我看到這個post如何選擇一組的最後一個記錄,但我沒有足夠的熟悉SQL得到它的日期時間的工作:
我想用lead()
或lag()
比較日期的記錄與下一個記錄,但我使用postgresql 8.3,我認爲窗口引入8.4。
很好的解決方案,第一個'DESC'是可選的。 – 2012-08-14 16:56:26
謝謝,這很聰明!如果我正確地理解了這一點,那麼'DISTINCT ON(sample_time :: date)'確保每天只返回一條記錄,其餘的則由ORDER BY完成。如果我省略第二個DESC,我會得到每天的第一個記錄。第一個DESC只是最先記錄最新的記錄。 – RyanN 2012-08-14 17:07:03
@RyanN:['DISTINCT'](http://www.postgresql.org/docs/current/interactive/sql-select.html#SQL-DISTINCT)自動按(不同)列排序。你可以添加一個顯式的'ORDER BY' - 它不能不同意'DISTINCT' - 對於不同的列使用額外的列和/或'DESC'而不是默認的'ASC'。 – 2012-08-14 17:22:32