这是我的数据库的样子: 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(
..
答案 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;
如果您要查找的是最大值,请更换它们。