我使用postgresql lag函数为用户提取下一条记录,但如何将其限制为当前记录的当天?
SELECT (sd.doc ->> 'readerId'::text)::integer current, LAG((sd.doc ->> 'readerId'::text)::integer) OVER (ORDER BY sd.created_at DESC) next FROM sd
table-id(主键),doc(jsonb类型)和created_at时间戳只有3个字段。
问题是我想选择当天用户访问的下一个读者。使用我当前的查询,它可以从第二天返回下一个readerId。
答案 0 :(得分:1)
按天划分:
SELECT (sd.doc ->> 'readerId'::text)::integer current, LAG((sd.doc ->> 'readerId'::text)::integer) OVER (PARTITION BY date_trunc('1 day', sd.created_at) ORDER BY sd.created_at DESC) next FROM sd