我有一张桌子,如下所示:
我需要基于identity_no选择列,并且还需要选择按src_date分组的非零/非空列值。所以当我查询identity_no时,我想要的是:
我需要一个postgresql语句,或者甚至一个函数都可以。我尝试合并。但我不能在src_date上分组。这里src_date是字符串而不是日期
答案 0 :(得分:3)
使用group by
和max()
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
对表进行分组,而其他列则需要使用min
或max
之类的方法进行汇总。从您的输出看来,id
是每个组中的最小值。其他列不为每个组包含多个值,因此min
和max
的工作原理相同。但是,您应该考虑其他列是否每个组都有多个值,您希望如何将它们聚合。
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