gpt4 book ai didi

多行的MySQL AVG TimeDiff

转载 作者:行者123 更新时间:2023-11-29 00:35:13 36 4
gpt4 key购买 nike

我有一个查询,需要它从两个单独的表中选择两个不同时间的平均时差。

在查询的下一部分出现之前,这似乎很容易:我必须按学生进入办公室的原因进行分组。所以现在这个查询需要:

  1. 选择原因(why)
  2. 计算一个学生因为这个原因进来的次数(为什么)
  3. 然后我需要检查从开始时间到结束时间的 AVG 时间。请记住,我是按原因分组的。这意味着我需要 timediff 来计算属于学生访问原因的所有记录的差异。

我写了这个查询:

 SELECT why, 
count(why),
SEC_TO_TIME(AVG(MAX(support.finishtime) - session.signintime))
FROM session
LEFT JOIN support
ON support.session_id = session.session_id
WHERE status = 3
GROUP BY why;

但是我得到一个错误:

ERROR 1111 (HY000): Invalid use of group function

这个问题我好像没看懂。通过阅读过去的问题,他们正在考虑使用 having?但我不明白在这种情况下如何甚至在哪里添加 having 子句。

如有任何帮助,我们将不胜感激。

谢谢

最佳答案

SELECT 
session.why AS Reason,
COUNT(session.why) AS Count,
SEC_TO_TIME(AVG(TIMEDIFF(t.fin, session.signintime))) AS Time
FROM session
LEFT JOIN (SELECT support.session_id, MAX(support.finishtime) AS fin
FROM support
GROUP BY support.session_id) AS t
ON session.session_id = t.session_id
WHERE session.status = 3
GROUP BY session.why
ORDER BY session.signintime DESC

这完美地完成了工作!我几个小时前才得到它,我从来没有真正使用过子查询,所以我的教授帮助我解决了这个问题。

关于多行的MySQL AVG TimeDiff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14668319/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com