Sql 选择多个属性的最大值
我有一个包含3000个属性的表(用于数据挖掘实验) 这张桌子看起来像Sql 选择多个属性的最大值,sql,postgresql,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将其分组即可实现这一点 但
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)
有人知道一种快速实现这一点的方法吗
非常感谢您事先提供的帮助为了使用group语句中没有的属性,您必须使用一些聚合函数。因此,没有任何更快的方法。为了使用group语句中没有的属性,您必须使用一些聚合函数。因此,没有任何更快的方法。通过
分组,这很容易:
select id, max(attr1) as attr1, max(attr2) as attr2, max(attr3) as attr3
from t
group by id
如果不想进行所有这些键入,请将列列表放在Excel中。添加一个公式,例如=“max”(&A1&”)作为“&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%'
选择“max(“| | column_name | |”)作为“| | column_name |”
从信息_SCHEMA.c列
其中表名=和列名,如“attr%”
执行最后两个操作时,请记住从最后一行中删除最后一个逗号。使用分组方式很容易:
select id, max(attr1) as attr1, max(attr2) as attr2, max(attr3) as attr3
from t
group by id
如果不想进行所有这些键入,请将列列表放在Excel中。添加一个公式,例如=“max”(&A1&”)作为“&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%'
选择“max(“| | column_name | |”)作为“| | column_name |”
从信息_SCHEMA.c列
其中表名=和列名,如“attr%”
完成最后两个步骤时,请记住从最后一行中删除最后一个逗号。Hi Gordon,我从来没有想到过excel方法。这将节省我大量的时间。非常感谢你Hi Gordon,我从没想过excel方法。这将节省我大量的时间。非常感谢你