GROUP BY子句在IBM dashDB中神秘失败

时间:2016-07-15 01:30:55

标签: sql db2 ibm-cloud db2-luw dashdb

理论上,我应该能够在dashDB的SQL语法中运行GROUP BY子句。这有效:

... std::vector<CustomLayout> customLayouts; // private class member variable

void App::loadCustomLayouts() {
    CustomLayout customLayout;
    // ... create HWND

    onMessage(WM_RBUTTONDOWN, [customLayout, this]() {

        auto it = std::remove(customLayouts.begin(), customLayouts.end(), customLayout);
        customLayouts.erase(it); // occasionally causes access violation
    });
}

然而,这不是:

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

这是我从IBM Bluemix dashDB Web仪表板中的Run SQL Web控制台获得的错误。旁注,我无法复制/粘贴它,并且它最终被切断,因为我既没有巨型显示器,也没有能够在错误消息面板中滚动。我不得不使用开发人员工具复制出包含它的div的innerHTML:

以&#34; MESSAGE_RETWEET_COUNT&#34;开头的表达式在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条款。

1 个答案:

答案 0 :(得分: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;