2016-07-15 3 views
-1

Теоретически я должен иметь возможность запускать предложение GROUP BY в синтаксисе SQL dashDB. Это работает:Предложение GROUP BY таинственным образом не работает в IBM dashDB

SELECT MESSAGE_BODY, MESSAGE_RETWEET_COUNT FROM COOLSCHEMA.DRIL_TWEETS 
ORDER BY MESSAGE_RETWEET_COUNT DESC 
LIMIT 100; 

Однако это не делает:

SELECT MESSAGE_BODY, MESSAGE_RETWEET_COUNT FROM COOLSCHEMA.DRIL_TWEETS 
GROUP BY MESSAGE_BODY 
ORDER BY MESSAGE_RETWEET_COUNT DESC 
LIMIT 100; 

Это ошибка, я получаю от веб-консоли Run SQL в веб-панели управления IBM Bluemix dashDB. Боковое замечание, я не мог скопировать/вставить его, и он был отключен в конце, потому что у меня не было гигантского монитора или у меня была возможность прокручиваться на панели сообщений об ошибках. Я должен был использовать инструменты разработчика, чтобы скопировать внутренний HTTML содержащего его div:

Выражение, начинающееся с «MESSAGE_RETWEET_COUNT», указанное в предложении SELECT, предложение HAVING или предложение ORDER BY, не указано в предложении GROUP BY или он заключен в предложение SELECT, предложение HAVING или предложение ORDER BY с функцией столбца и не указано условие GROUP BY. SQLCODE = -119, SQLSTATE = 42803, DRIVER = 3.66.46

В любом случае; Кто-нибудь знает, почему мой пункт GROUP BY не работает? В документации по коду ошибок указано, что у меня есть предложение HAVING (https://www.ibm.com/support/knowledgecenter/SSEPEK_10.0.0/codes/src/tpc/n119.html). У меня нет предложения HAVING.

ответ

2

В GROUP BY все неагрегированные столбцы должны быть в условии GROUP BY. Я предполагаю, что вы можете:

SELECT MESSAGE_BODY, SUM(MESSAGE_RETWEET_COUNT) 
FROM COOLSCHEMA.DRIL_TWEETS 
GROUP BY MESSAGE_BODY 
ORDER BY SUM(MESSAGE_RETWEET_COUNT) DESC 
LIMIT 100;