GROUP BY 子句在 IBM dashDB 中神秘失败
GROUP BY clause failing mysteriously in IBM dashDB
理论上,我应该能够 运行 dashDB 的 SQL 语法中的 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 Web 仪表板的 运行 SQL Web 控制台得到的错误。旁注,我不能 copy/paste 它,它最后被切断了,因为我既没有大显示器,也没有能力在错误消息面板中滚动。我不得不使用开发人员工具复制出包含它的 div 的 innerHTML:
在 SELECT 子句、HAVING 子句或 ORDER BY 子句中指定的以 "MESSAGE_RETWEET_COUNT" 开头的表达式未在 GROUP BY 子句中指定或在 SELECT 子句中、HAVING 子句或带有列函数且未指定 GROUP BY 子句的 ORDER 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 子句。
在 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;
理论上,我应该能够 运行 dashDB 的 SQL 语法中的 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 Web 仪表板的 运行 SQL Web 控制台得到的错误。旁注,我不能 copy/paste 它,它最后被切断了,因为我既没有大显示器,也没有能力在错误消息面板中滚动。我不得不使用开发人员工具复制出包含它的 div 的 innerHTML:
在 SELECT 子句、HAVING 子句或 ORDER BY 子句中指定的以 "MESSAGE_RETWEET_COUNT" 开头的表达式未在 GROUP BY 子句中指定或在 SELECT 子句中、HAVING 子句或带有列函数且未指定 GROUP BY 子句的 ORDER 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 子句。
在 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;