2016-07-15 10 views
-1

理論的には、dashDBのSQL構文でGROUP BY句を実行できるはずです。これは動作します:IBM dashDBで不思議にGROUP BY句が失敗する

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; 

これは私がIBM Bluemix dashDBウェブダッシュボードのRun SQLのWebコンソールから取得エラーです。サイドノート、私はそれをコピー/貼り付けできませんでした。私は巨大なモニターを持っていないか、エラーメッセージパネルでスクロールする機能を持っていなかったので、最後に切り捨てられました。

SELECT句、HAVING句、またはORDER BY句に "MESSAGE_RETWEET_COUNT"を指定している式が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; 
関連する問題