我正在尝试按 name
字段进行分组,但使用行可能具有的其他值的“合并聚合”。这是数据:
name | jurisdiction | db_from
------------|-----------------|----------------
my station NULL 2017-06-21 8:01
my station my jurisdiction 2017-06-21 8:00
my station old data 2017-06-21 7:59
我想结束:
name | jurisdiction
------------|-----------------
my station my jurisdiction
这是我想出的:
WITH _stations AS (
SELECT * FROM config.stations x ORDER BY x.db_from DESC
)SELECT
x."name",
(array_remove(array_agg(x.jurisdiction), NULL))[1] as jurisdiction
FROM _stations x
GROUP BY
x."name";
jurisdiction
字段的某些值可能为空,我正在尝试取最近的非空值。
我知道我不应该依赖 CTE 的命令,但它现在似乎还有效。
最佳答案
我花了一点时间才找到这个,所以我希望它能有所帮助。如果这不是解决问题的最佳方法,请告诉我:
SELECT
x."name",
(array_remove(array_agg(x.jurisdiction ORDER BY x.db_from DESC), NULL))[1] as jurisdiction
FROM config.stations x
GROUP BY x."name"
关于postgresql - 合并postgres中的字段聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44680699/