postgresql - 合并postgres中的字段聚合

标签 postgresql aggregate coalesce

我正在尝试按 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/

相关文章:

postgresql - Postgres : ShareLock Deadlock on transaction

python - 使用 PostgreSQL 在 Django 上运行 syncdb 时出现 SSL 错误

python - 从 groupby 和多重聚合中展平层次索引 pandas.DataFrame

MYSQL选择当前连续获胜

postgresql - 比较值和列时的光滑过滤器是选项

mysql - 通过连接或包含从子记录列表中获取父记录列表

count - Cypher:无法从连接的节点获取分组的节点数

python - pandas groupby 聚合具有多列的自定义函数

用于获取最近价格变化最多的前 1 个产品的 SQL 查询

Mysql left join with or condition for fallback 语言