在Postgres中按日期合并多个值组

时间:2019-03-19 04:41:28

标签: sql postgresql

我有一张桌子,如下所示:

[actual]: https://i.stack.imgur.com/267Ew.png

我需要基于identity_no选择列,并且还需要选择按src_date分组的非零/非空列值。所以当我查询identity_no时,我想要的是: result

我需要一个postgresql语句,或者甚至一个函数都可以。我尝试合并。但我不能在src_date上分组。这里src_date是字符串而不是日期

2 个答案:

答案 0 :(得分:3)

使用group bymax()

select scr_date,max(upload) as upload, max(download) as download, identity_no, max(email) as email,
max(phone) as phone, min(id) as id
from tablename
group by scr_date,identity_no

答案 1 :(得分:1)

您需要按scr_date对表进行分组,而其他列则需要使用minmax之类的方法进行汇总。从您的输出看来,id是每个组中的最小值。其他列不为每个组包含多个值,因此minmax的工作原理相同。但是,您应该考虑其他列是否每个组都有多个值,您希望如何将它们聚合。

select min(id) as id, max(upload) as upload, max(download) as download, max(email) as email, max(phone) as phone, scr_date
from tbl
group by scr_date