无法修复此问题:“无法按聚合分组”

时间:2017-05-28 09:42:11

标签: sql group-by

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

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

这导致:

  

GROUP BY列表中不存在表达式“点击次数”

如果我试试这个:

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列表中不存在表达式“点击次数”

如果通过以下方式向群组添加点击次数:

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

谢谢!

2 个答案:

答案 0 :(得分: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,实际上会增加混乱。因此,试着完全省略它们。使用正确的列alises并在group byorder by中使用它们以避免混淆。

答案 1 :(得分:0)

试试这个

SELECT company_name, SUM(clicks)

FROM table1

WHERE code = 'ES'

GROUP BY company_name

ORDER BY 2 DESC;