【问题标题】:Average Time over a period of time in a SQL QuerySQL 查询中一段时间​​内的平均时间
【发布时间】:2014-09-07 08:41:21
【问题描述】:

您好,我如何才能获得跨记录的最短时间的 AVG?

意思是,我有这些记录:

Id   Date    Time    Amount
1    7/1/14  9:00am  5.00
2    7/1/14  8:45am  6.00
3    7/1/14  9:30am  7.00
4    7/2/14  8:30am  4.50
5    7/2/14  9:15am  5.50
6    7/2/14  7:45am  4.75

现在我需要的是获取每天的 MIN ......所以在这种情况下它将是记录 2 和 6。 但我想知道这些时间的平均水平……意思是上午 8 点 45 分和上午 7 点 45 分……

我想知道一段时间内首次销售的平均时间是多少。不知道如何平均时间。也就是说,在给定的时间段内,通常会在上午 8 点 20 分左右进行首次销售(估计)

非常感谢任何帮助

【问题讨论】:

  • 你用的是什么数据库?
  • 使用什么数据类型来存储时间?

标签: sql time average min


【解决方案1】:

你可以试试这样的:-

SELECT Id, Date, AVG(Time)
FROM (SELECT Id, Date, MIN(Time) AS Time
      FROM YOUR_TABLE
      GROUP BY Id, Date) AS TABLE1
GROUP BY Id, Date;

这可能对你有帮助。

【讨论】:

    【解决方案2】:

    要获得平均值,请将时间转换为秒,计算平均值并将其转换回时间。

    SELECT Id, Date, SEC_TO_TIME(AVG(sec))
    FROM (SELECT Id, Date, MIN(TIME_TO_SEC(Time)) AS sec
          FROM YOUR_TABLE
          GROUP BY Id, Date) AS TABLE1
    GROUP BY Id, Date;
    

    【讨论】:

    • 感谢您的回复!我看到需要什么,从天偏移量降低到秒,然后平均,然后重新显示!我正在使用访问权限,所以实际上我需要做一些不同的事情。
    【解决方案3】:
    SELECT Format(( AVG(Table1.daTime) /86400),"hh:nn:ss") AS AvgTimeOfFirstTransaction
    FROM (SELECT  date, (MIN(Time) *86400)  AS daTime
           FROM transactions
           WHERE (  (transactions.date)>=#7/1/2014# And (transactions.date)<#7/3/2014#) 
           GROUP BY transactions.date
    )  AS TABLE1
    

    【讨论】:

    • 这是我真正需要的访问权限。啊,但我只是注意到不需要 sec * 和 /,我真正缺少的只是两种解决方案的格式。发送给你们俩。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 2010-11-03
    相关资源
    最近更新 更多