gpt4 book ai didi

sql - 在没有分组依据的情况下获取每天/每小时的平均值

转载 作者:行者123 更新时间:2023-12-04 22:12:24 25 4
gpt4 key购买 nike

在单个表中,假设我有里程和时间戳的日志。我想获得每天和每小时的平均里程数。由于日期格式,我无法使用固有的“分组依据”子句。

以下是一些示例数据:

  Table: tb_mileage
===============================================
f_mileagetimestamp f_mileage
-----------------------------------------------
2014-08-11 11:13:02.000 50
2014-08-11 16:12:55.000 100
2014-08-11 16:55:00.000 30
2014-08-12 11:12:50.000 80
2014-08-12 16:12:49.000 100
2014-08-13 08:12:46.000 40
2014-08-13 08:45:31.000 100

因此,理想的结果集将如下所示( PER DAY )(注意,日期格式无关紧要):
  Date                 Average
------------------------------------------------
08/11/2014 60
08/12/2014 90
08/13/2014 70

理想的结果集将如下所示 ( PER HOUR )(注意,日期格式无关紧要):
  Date                     Average
------------------------------------------------
08/11/2014 11:00:00 50
08/11/2014 16:00:00 65
08/12/2014 11:00:00 80
08/12/2014 16:00:00 100
08/13/2014 08:00:00 70

请注意,此处的示例纯属理论和简化,并不一定反射(reflect)实际实现所需的确切标准。这只是为了插入我自己的学习,因为我发现的所有做类似事情的例子都非常复杂,使学习变得困难。

最佳答案

试试这个日期版本。

select cast(t.f_mileagetimestamp as date) as dt, avg(t.f_mileage) as avg_mileage
from
tb_mileage t
group by cast(t.f_mileagetimestamp as date)
order by cast(t.f_mileagetimestamp as date) asc;

对于小时版本,您可以使用它。
select t2.dt, avg(t2.f_mileage) as avg_mileage
from
(
select substring(CONVERT(nvarchar(100), t1.f_mileagetimestamp, 121), 1, 13) + ':00' as dt, t1.f_mileage
from
tb_mileage t1
) t2
group by t2.dt
order by t2.dt asc;

关于sql - 在没有分组依据的情况下获取每天/每小时的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25252871/

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