我正在尝试按照 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的顺序,但目前似乎可以工作。