Postgresql
僅在特定日期範圍內的每一天獲取第一條消息
表
messages
:我們如何選擇
conv_id
每天在對話中發送的第一條消息和第一個回复( )?筆記:
- 可以有很多使用者。
- 一個使用者可以發送多條消息。
- 這是一個人的數據集,只有兩個人在聊天。
- 一整天,多條消息被交換。
- 第一條消息可以定義為第一個使用者在第 1 天內的最短髮送時間。
- 第一次回复可以定義為第二個使用者在第一天的最短髮送時間。
有一個真正簡單的解決方案
DISTINCT ON
:SELECT DISTINCT ON (date_trunc('day', sent_time), conv_id, user_id) * FROM tbl ORDER BY date_trunc('day', sent_time), conv_id, user_id, sent_time;
db<>在這裡擺弄
看:
模擬的索引跳過可能會更快。看:
在 的情況下
timestamptz
,除非明確定義,否則“天”由目前會話的時區設置定義。看: