麻烦在postgres

时间:2015-09-23 00:19:07

标签: sql postgresql group-by

我有一张表myTable

id  | test_id_1 | test_id_2  
001 | 0         | 1  
001 | 1         | 0  
002 | 1         | 0  
002 | 0         | 1  
003 | 1         | 0  
003 | 0         | 1

我尝试根据id对行进行分组,以便我可以获得id这样的单行

 id | test_id_1 | test_id_2  
001 | 1         | 1    
002 | 1         | 1    
003 | 1         | 1  

这是我的查询

SELECT *
FROM myTable
GROUP BY id

我一直收到错误消息,指出test_id_1不在GROUP BY中。但是,如果我确实包括它,我就不会得到我正在寻找的桌子。

2 个答案:

答案 0 :(得分:3)

试试这个(我假设你需要的是test_id_1和test_id_2的总和):

SELECT id, SUM(TEST_ID_1), SUM(TEST_ID_2)
FROM myTable
GROUP BY id

group by语法要求您聚合“group by”子句中未列出的所有列,这就是您收到错误的原因。通过说到聚合,您可以使用SUM,COUNT,MAX或MIN函数。

答案 1 :(得分:0)

您还可以获得相同的输出,同时为每个id-wise组获取test_id_1和test_id_2的最大值。所以你也可以尝试下面的查询

SELECT id, MAX(TEST_ID_1), MAX(TEST_ID_2)
FROM myTable
GROUP BY id