选择多个属性的MAX

时间:2013-05-16 12:59:43

标签: sql postgresql

我有一个包含3000个属性的表(用于数据挖掘实验) 该表看起来像

id attr1 attr2, attr3
a  0         1       0
a  1         0       0
a  0         0       0
a  0         0       1

我希望以格式

id, attr1, attr2, attr3
a     1       1        1

值只能是0或1,所以,我认为只需获取每列的最大值并按ID对其进行分组即可实现此目的 但是,我不希望为每个属性输入MAX(attr X) 有谁知道实现这个的快速方法

非常感谢您的帮助

2 个答案:

答案 0 :(得分:3)

使用group by

这很容易
select id, max(attr1) as attr1, max(attr2) as attr2, max(attr3) as attr3
from t
group by id

如果您不想进行所有这些输入,请将列表列表放在Excel中。添加=" max("&A1&") as "&A1&","等公式。然后复制单元格并将结果复制到查询所在的位置。

您也可以在SQL中执行此操作,例如:

select '      max('||column_name||') as '||column_name||','
from INFORMATION_SCHEMA.columns c
where table_name = <your table name here> and column_name like 'attr%'

当您执行最后两行时,请记住从最后一行删除最后一个逗号。

答案 1 :(得分:0)

您必须使用某些聚合函数才能使用不在group语句中的属性。所以没有更快的方法。