Postgres Group by忽略null

时间:2018-10-26 12:42:02

标签: sql postgresql

我想做的事情实际上应该是基本的,但是由于某种原因我无法弄清楚。请考虑以下内容:

ID, COL1, COL2
1   'A'   NULL
1   NULL  'B'

我想按ID分组并“缩小”差距并获得:

ID, COL1, COL2
1   'A'   'B'

我可能正在停电,因为这听起来非常棘手的问题/解决方案。

在具有许多行和列的非常大的数据集上,因此效率很重要

1 个答案:

答案 0 :(得分:2)

demo: db<>fiddle

您可以简单地使用一个“删除” NULL值的聚合函数。例如,如果还有另一个值,MAX不会选择NULL

SELECT 
    id, 
    MAX(col1) as col1, 
    MAX(col2) as col2
FROM my_table
GROUP BY id