Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择多个属性的最大值_Sql_Postgresql - Fatal编程技术网

Sql 选择多个属性的最大值

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将其分组即可实现这一点 但

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


非常感谢您事先提供的帮助

为了使用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方法。这将节省我大量的时间。非常感谢你