我有一个包含用 Oracle 编写的 dense_rank 函数的 select 语句,但我无法弄清楚如何使其与 postgressql (v11.x) 兼容
SELECT facility_id_fk, max(inspection_date) as last_inspection,
max(inspection_type) keep (dense_rank first order by inspection_date desc) as inspection_type
FROM facility_inspections
GROUP BY facility_id_fk
此查询为我提供了最后一次检查以及最后一次检查的类型:
-------------------------------------------------
facility id | inspection date | inspection type
-------------------------------------------------
93 04/28/2020 FULL
94 04/28/2020 LIMITED
-------------------------------------------------
我尝试了以下方法,但它遗漏了我需要的检查类型描述,并且仍然提供重复项并查看排名列,它看起来像是对表中的所有检查进行排名,而不是针对特定设施
SELECT facility_id_fk, max(inspection_date) as last_inspection,
dense_rank () OVER (
PARTITION BY inspection_type
ORDER BY inspection_date DESC
) rank_order
FROM facility_inspections
GROUP BY facility_id_fk, inspection_date, inspection_type