2013-10-04 2 views
0

Я хочу, чтобы выполнить запрос на PostGreSQL сервере, структура которого, как показано ниже:GROUP BY и ORDER BY на разных колонках

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

Я попытался включить colNotInSelect в предложения GROUP BY, но так как оно это столбец с отличным значением, он побеждает цель использования GROUP BY в первую очередь.

Любая помощь приветствуется.

+1

Поскольку это отличие, * которая * значение colNotInSelect вы хотите? –

+0

Мне не нужна никакая ценность colNotInSelect. Я просто хочу использовать его для упорядочения записей, возвращаемых запросом. –

+1

который вы хотите использовать в заказе? –

ответ

1

Вы не можете заказать этот столбец, потому что он потенциально имеет много значений для каждого значения col1.

Однако вы можете применить агрегатную функцию к столбцу и заказать это.

, например:

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

Вы сомневаетесь, что нет смысла, потому что строки сгруппированы по col1, поэтому в сгруппированных строках нет colNotInSelect. Попробуйте агрегировать colNotInSelect перед заказом, например:

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

Если не соответствовать вашим потребностям, может быть, вы должны выяснить, что вы делаете.