抱歉这个愚蠢的问题。我已经阅读了很多关于同一问题的帖子,但仍然无法解决这个问题......
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
谢谢!
答案 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 by
和order by
中使用它们以避免混淆。
答案 1 :(得分:0)
试试这个
SELECT company_name, SUM(clicks)
FROM table1
WHERE code = 'ES'
GROUP BY company_name
ORDER BY 2 DESC;