0

我有一个包含 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) 有人知道吗实现这一点的快速方法

非常感谢您提前提供的帮助

4

2 回答 2

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%'

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

于 2013-05-16T13:18:42.603 回答
0

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

于 2013-05-16T13:04:56.867 回答