+-------+----------------------+----------+------------------+
| isbn | book_container_id | shelf_id | update_time |
+-------+----------------------+----------+------------------+
| 555 | 6 | shelf100 | 11/15/2015 19:10 |
| 123 | 1 | shelf1 | 11/28/2015 8:00 |
| 555 | 4 | shelf5 | 11/28/2015 9:10 |
| 212 | 2 | shelf2 | 11/29/2015 8:10 |
| 555 | 6 | shelf9 | 11/30/2015 22:10 |
| 321 | 8 | shelf7 | 11/30/2015 8:10 |
| 555 | 4 | shelf33 | 12/1/2015 7:00 |
+-------+----------------------+----------+------------------+
假設我有一個類似上述的表(PostgreSQL)bookshelf_configuration
。如果我獲得ISBN和時間戳,我希望能夠找到isbn
和book_container_id
的每個唯一組合的最接近(僅限於之前)的記錄。查詢獲得最接近的時間戳值的記錄,以獲得兩列的唯一組合
所以,如果我在看isbn
「555」,與'12 /二千零十五分之一7:00' 的時間戳,我該回去:
+-------+----------------------+----------+------------------+
| isbn | book_container_id | shelf_id | update_time |
+-------+----------------------+----------+------------------+
| 555 | 6 | shelf9 | 11/30/2015 22:10 |
| 555 | 4 | shelf33 | 12/1/2015 7:00 |
+-------+----------------------+----------+------------------+
我的SQL的知識是非常基本的。我有一個查詢可以工作,如果我只需要考慮isbn,但我需要一些幫助瞭解如何對組合(isbn, book_container_id)
執行此操作。
我試過了;不幸的是,它看起來像Redshift不支持DISTINCT ON(我應該提到這一點,但我沒有意識到它會有所作爲)。 我使用了JamieD77解決方案的一個版本,但是我選擇了這個答案,因爲有完整的解釋,並且鏈接了關於這兩個解決方案的信息等。感謝他們幫助我理解事情的更好的鏈接! 回覆:ISO 8601的建議,我們確實使用日期字符串的ISO 8601格式 - 我最初在excel中寫了我的示例表,所以我認爲他們在那裏搞砸了(或者只是用戶錯誤...) – ryoaska