错误1140(42000)在没有GROUP BY的汇总查询中,表达式#1

时间:2019-01-16 12:31:38

标签: mysql sql

我的问题来自https://www.hackerrank.com/challenges/earnings-of-employees/problem

下面是输入数据:

enter image description here

该问题要求找到最大收入(月*薪水)和具有最大收入的行总数。

我的尝试是:

select distinct salary*months, count(*)
from employee
where salary*months = (select max(salary*months) from employee)

这给了我错误消息:

  

第6行的错误1140(42000):在没有GROUP BY的聚合查询中,SELECT列表的表达式#1包含非聚合列'run_byli4vf7yqz.employee.salary';这与sql_mode = only_full_group_by`

不兼容

有人建议我失败了吗?

1 个答案:

答案 0 :(得分:1)

请勿使用select distinct

select (e.salary * e.months), count(*)
from employee e
where (e.salary * e.months) = (select max(e2.salary * e2.months)
                               from employee e2
                              )
group by (e.salary * e.months);

该信息非常清楚。您有count(*),因此您的查询是汇总查询。但是,您有一个未聚合的列,因此MySQL感到困惑:是否要聚合?因此是错误。

您也可以这样写:

select (e.salary * e.months), count(*)
from employee e
group by (e.salary * e.months)
order by (e.salary * e.months) desc
limit 1;