我有一个包含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) 有谁知道实现这个的快速方法
非常感谢您的帮助
答案 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语句中的属性。所以没有更快的方法。