gpt4 book ai didi

sql - 带有 where 子句的 Postgres 窗口函数

转载 作者:行者123 更新时间:2023-11-29 13:34:25 24 4
gpt4 key购买 nike

我在以下组织的 Postgres 中有 4 个表

reads:
id -- primary key
value -- integer
read_datetime -- datetime
patient_id -- integer
reader_id -- integer

readers:
id -- primary key

patient_readers:
id -- primary key
patient_id -- integer
reader_id -- integer
issuance_datetime -- datetime
unassignment_datetime -- datetime
issued_value -- integer

patients:
id -- integer

我想创建一个查询,以获取特定阅读的最新发布信息。到目前为止,我有以下查询

SELECT
value,
read_datetime,
issued_value,
issuance_datetime,
unassignment_datetime
FROM "reads"
INNER JOIN "readers" ON "readers"."id" = "reads"."reader_id"
INNER JOIN "patient_readers" ON "patient_readers"."reader_id" = "readers"."id" AND patient_readers.patient_id = reads.patient_id
INNER JOIN patientsON patients.id = reads.patient_id
ORDER BY reads.patient_id , read_datetime, issuance_datetime

这会产生输出,其中一组行对于除发行信息(发行日期时间、取消分配日期时间和发行值)之外的所有信息都是相同的,正如我所期望的那样。我想汇总关于 readers.id 和 patients.id 的发行信息,然后我只想要一组发行信息,其中

read_datetime > issuance_datetime AND (
(unassignment_datetime IS NOT NULL AND read_datetime < unassignment_datetime) OR
(NEXT(issuance_datetime) IS NOT NULL AND read_datetime < NEXT(issuance_datetime) OR
(NEXT(issuance_datetime) IS NULL)

我在这里编写函数 NEXT() 但基本上我想向前看与窗口相关的一行。我还想在窗口中做一个 WHERE 子句(或者看起来如此)。我刚刚开始阅读有关窗口函数的内容,所以其中很多内容对我来说都是新的(而且我不确定窗口函数是否是我想要的)所以我希望这可以在 Postgres 中解决。

谢谢

最佳答案

查看 lead() 函数。那个人可以查看窗口中的“下一个”行。

http://www.postgresql.org/docs/current/static/functions-window.html

关于sql - 带有 where 子句的 Postgres 窗口函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16575345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com