gpt4 book ai didi

sql - 计算每天的平均等待时间

转载 作者:行者123 更新时间:2023-11-29 13:46:10 24 4
gpt4 key购买 nike

我有一个结构如下的表:

date        | customerID    | arrivalTime       | servedTime     |
------------------------------------------------------------------
2018-01-01 | 0001 |2018-01-01 18:55:00| 2018-01-01 19:55:00|
2018-01-01 | 0002 |2018-01-01 17:43:00| 2018-01-01 17:59:00|
2018-01-01 | 0003 |2018-01-01 14:01:00| 2018-01-01 14:10:00|
2018-01-02 | 0004 |2018-01-02 09:22:00| 2018-01-02 10:00:00|
2018-01-02 | 0005 |2018-01-02 12:34:00| 2018-01-02 13:10:00|
2018-01-02 | 0006 |2018-01-02 18:54:00| 2018-01-02 19:00:00|

我正在尝试生成一个包含两列的查询:

date  | averageWaitTime
-------------------------

然后我可以使用这个结构来创建图表。我不知道如何将 AVGGROUP BY 结合起来并获得所需的结果。

我最初尝试使用我在我的应用程序中其他地方使用的分钟值来执行此操作,该值是通过以下查询生成的:

cast(EXTRACT(EPOCH FROM (servedTime - arrivalTime )) as integer)/60

但这仍然是每个客户的记录,而不是按天计算的。

非常感谢任何帮助

最佳答案

您不需要转换为秒来求和时间间隔 - 只需使用 interval 数据类型。

calc(我将列命名为您列的第一个字母):

t=# select d,c,avg(s-a) from t group by d,c order by d,c;
d | c | avg
------------+-------------+----------
2018-01-01 | 0001 | 01:00:00
2018-01-01 | 0002 | 00:16:00
2018-01-01 | 0003 | 00:09:00
2018-01-02 | 0004 | 00:38:00
2018-01-02 | 0005 | 00:36:00
2018-01-02 | 0006 | 00:06:00
(6 rows)

你的结果:

t=# select d,avg(s-a) from t group by d order by d;
d | avg
------------+----------
2018-01-01 | 00:28:20
2018-01-02 | 00:26:40
(2 rows)

简单的算术检查:

t=# select interval '01:00:00' + '00:16:00' + '00:09:00';
?column?
----------
01:25:00
(1 row)

t=# select interval '01:25:00'/3;
?column?
----------
00:28:20
(1 row)

这是正确的,因为:

t=# select 85/3.0;
?column?
---------------------
28.3333333333333333
(1 row)

而0.3(3)是三分之一,也就是20秒28分20秒

当然,我正在计算算术平均值 - 因为它是最常见的,所以如果您不指定一个,则假定...

关于sql - 计算每天的平均等待时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48206764/

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