如何获取具有求和列的最大值的行

时间:2016-03-13 12:07:47

标签: mysql database

这是我的数据库的样子: https://dev.mysql.com/doc/employee/en/sakila-structure.html

我的目标是找到员工工作时间最长的部门。

这就是我所拥有的:

SELECT dept_no, MAX(SUM(DATEDIFF(
                                 case when to_date = '9999-01-01' then current_date else to_date end,
                                 from_date))) as amount
FROM dept_emp d, employees e
WHERE d.emp_no = e.emp_no
GROUP BY d.dept_no
ORDER BY amount DESC

我也得到了“无效使用群组功能”。我已经过了几次,但是不能正确。我觉得MAX(SUM(DATEDIFF(有问题,但这是我能想到的唯一方法。任何帮助都会非常赞赏!

感谢阅读!

-------------------------------------------- -------------------------------------------------- ------------------------------------- 更新:

我开始认为我现在可能需要max(avg(sum(datediff( ..

1 个答案:

答案 0 :(得分:1)

你不能在彼此之间使用两个聚合函数,即使你可能也不会做任何事情。

您可以从查询中删除最大值,并将结果限制为1以获得最大值,如下所示:

SELECT d.dept_no,
       SUM(DATEDIFF(case when to_date = '9999-01-01'
                             then current_date else to_date end,
                    from_date))) as amount
FROM dept_emp d, employees e
WHERE d.emp_no = e.emp_no
GROUP BY d.dept_no
ORDER BY amount DESC
LIMIT 1;

如果您要查找的是最大值,请更换它们。