如何解决基于 Groupby 字段的多个实例获取平均值DateDiff
目前我正在尝试获取在同一个月内多次发生的多个事件的开始和结束日期时间之间的平均日期差异。有四种不同类型的事件,它们运行的时间不同。
select
min(datetime) starttime,max(datetime) endtime,avg(endtime - min(datetime)) As avg_days,event
from log_economy_event_point_spending a
AND datetime between '2021-01-01' AND '2021-04-30'
group by event
order by event
但是,使用此方法,如果事件发生多次,则从第一个事件开始,最后一个事件结束。如何编写可以获取不同类型事件的平均日期时间持续时间的 SQL 代码?
非常感谢
解决方法
嗯。 . .我想你想要:
select event,min(datetime) as starttime,max(datetime) as endtime,(max(datetime) - min(datetime)) / nullif(count(*) - 1,0) As avg_days
from log_economy_event_point_spending leeps
where datetime >= '2021-01-01' and
datetime < '2021-05-01'
group by event
order by event;
这修正了日期/时间算术以获得平均值。请注意其他更改:
- 日期比较包括 4 月份的所有日期/时间值,我猜这就是您的意图。您的版本消除了 4 月 30 日的值。
- 表格别名有意义,而不是任意的字母。
- 您不能在定义别名的选择中的表达式中重复使用列别名。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。