不同列上的GROUP BY和ORDER BY

时间:2013-10-04 07:14:42

标签: sql postgresql select group-by

我想在POSTGRESQL服务器上执行查询,其结构如下:

SELECT col1, SUM(col2) GROUP BY col1 ORDER BY colNotInSelect;

我试图在GROUP BY子句中包含 colNotInSelect ,但由于它是一个具有不同值的列,因此它首先无法使用GROUP BY。

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

您不能按该列排序,因为它可能对col1的每个值都有很多值。

但是,您可以将聚合函数应用于列,并按此顺序排序。

例如:

SELECT   col1, 
         SUM(col2)
GROUP BY col1
ORDER BY MIN(colNotInSelect);

答案 1 :(得分:0)

您的问题实际上没有意义,因为行按col1分组,因此分组行中没有colNotInSelect。尝试在订购前聚合colNotInSelect,例如:

SELECT col1, SUM(col2), AVG(colNotInSelect) as col3 GROUP BY col1 ORDER BY col3;

如果不符合您的需要,也许您应该澄清您正在做的事情。