无法解决此问题:“无法按聚合分组”

Posted

技术标签:

【中文标题】无法解决此问题:“无法按聚合分组”【英文标题】:Can't fix this: "Cannot group by an aggregate" 【发布时间】:2017-10-28 18:46:10 【问题描述】:

抱歉这个愚蠢的问题。我已经阅读了很多关于同一问题的主题,但仍然无法解决这个问题......

SELECT   company_name, SUM(clicks)
FROM     table1
WHERE    code = 'ES'
GROUP BY 1
ORDER BY clicks DESC
LIMIT 100;

这会导致:

GROUP BY 列表中不存在表达式“clicks”

如果我试试这个:

SELECT   company_name, SUM(clicks)
FROM     table1
WHERE    code = 'ES'
GROUP BY 1,2
ORDER BY clicks DESC
LIMIT 100;

这是我得到的:

无法按聚合进行分组。

如果我尝试对“点击”不进行聚合:

SELECT   company_name, clicks
FROM     table1
WHERE    code = 'ES'
GROUP BY 1
ORDER BY clicks DESC
LIMIT 100;

错误:GROUP BY 列表中不存在表达式“clicks”

如果将点击添加到组中:

SELECT   company_name, clicks
FROM     table1
WHERE    code = 'ES'
GROUP BY 1,2
ORDER BY clicks DESC
LIMIT 100;

结果不是我需要的:

Company_name | clicks
-------------+--------
    company1 | 250   
    company1 | 340
    company2 | 100 
    company2 | 300
    company2 | 344

我怎样才能得到?:

Company_name | clicks
-------------+-------
    company1 | 590
    company2 | 744

谢谢!

【问题讨论】:

不能按clicks排序,不能按组排序。 请标记您的 RDBMS。 对不起@McNets,这是一家私人公司的RDBMS。说不清楚。 感谢您的格式化。下次我会坚持的! @MarceCastro 这没有意义。如果该公司编写和使用了一些 DBMS,但其他人不知道,那么发布任何关于它的问题都是不合时宜的,因为没有人能够回答。如果某个公司使用 mysql 是机密,那么不要命名这家公司,而是命名 MySql。 【参考方案1】:

你应该这样做

SELECT company_name, SUM(clicks) as clicks
FROM table1   
WHERE code = 'ES'  
GROUP BY company_name 
ORDER BY clicks DESC 
LIMIT 100;

您的第一个查询是正确的,不知道为什么会出现错误。但是,您的第二个查询不正确,因为您无法按第二列分组,而第二列是您通过聚合得出的。

group by 子句中使用数字,虽然看起来neater,但实际上增加了混乱。因此尝试完全省略它们。使用正确的列别名并在group byorder by 中使用它们以避免混淆。

【讨论】:

非常感谢!我将对其进行一些研究:-)顺便说一句,我如何选择它作为最佳答案?什么都能找到(可能是因为我的名气不大) 请阅读What should I do when someone answers my question。您必须单击答案左侧的tick。接受答案的声望没有限制,但是要进行投票,您需要至少 10 个声望。 对不起!没注意到。感谢您的链接。 我认为这不是一个好的答案。它仅包含不使用数字别名的(主观)建议,这不是原始问题的根源(指的是来自order by 的未别名clicks)。最多可能是good comment。 正如我在回答中提到的那样,我不确定为什么第一个错误会出现,因为查询看起来是正确的。但是我给出了第二个错误的原因以及获得他预期输出的方法。【参考方案2】:

试试这个

SELECT company_name, SUM(clicks)

FROM table1

WHERE code = 'ES'

GROUP BY company_name

ORDER BY 2 DESC;

【讨论】:

以上是关于无法解决此问题:“无法按聚合分组”的主要内容,如果未能解决你的问题,请参考以下文章

解决无法启动此程序,因为计算机中丢失MSVCP71.dll。尝试重新安装该程序以解决此问题问题

清单合并失败:属性 application@appComponentFactory 无法解决此问题

解决Jenkins中HTML报告样式无法显示问题

如何解决无法在此文件中预览的问题?

无法启动此程序,因为计算机中丢失Qt5Widgets.dll.尝试重新安装该程序以解决此问题

无法启动此程序,因为计算机中丢失QtCore4.dIl。尝试重新安装该程序以解决此问题?