sql - 有问题的平均时间
问题描述
我在平均时间时遇到问题,我尝试对其进行平均,我尝试对其进行转换然后对其进行平均。Redshift SQL 不支持看起来可行的一件事。
试图转换时间和平均时间,但都没有成功
Select
date,
"agent name",
(TO_CHAR((sum("handle time") || 'second')::interval,'MI.SS')) as total,
(TO_CHAR((avg("handle time") || 'second')::interval,'MI.SS'))as AVGHandleTime
From five9_data.calllog
Where Skill in ('SF Sales', 'FYF Sales')
Group By "agent name", date
Order By Date DESC
Limit 100
我正在尝试检索给定时间段内每个人的平均通话时间。我是 sql 新手,如果我遗漏了什么,我深表歉意。例如 4:36 (MM:SS) 将导致 4.6 作为小数。我希望这个问题比我的上一个问题更清楚。
处理时间值 00:17:00、00:18:13、00:01:55、00:05:40、
解决方案
由于您的时间存储为 varchar 并且没有Time
或Interval
在 Redshift 中键入,因此您必须将其转换mm:ss
为数字以便您可以取平均值(因为您不能平均字符串/varchar)。
您可以使用函数SPLIT_PART
拆分指定分隔符的字符串并检索其中的一部分,然后应用一些数学运算来获得时间的十进制表示:
SELECT date,
"agent name",
avg(SPLIT_PART("handle time", ':', 1)::decimal(18,2)*60.00 + SPLIT_PART("handle time", ':', 2)::decimal(18,2) + SPLIT_PART("handle time", ':', 3)::decimal(18,2)/60.00) as AvgHandleTime
From five9_data.calllog
Where Skill in ('SF Sales', 'FYF Sales')
Group By "agent name", date
Order By Date DESC
Limit 100;
我没有一个 redshift 实例来测试它,但它应该让你在球场上。
更新:我已更新以考虑hh:mm:ss
格式。在这里,我们转换为十进制形式的分钟(就像我们以前一样)。
推荐阅读
- python - 图像分割后如何校正边界
- c++ - QHeaderview 中的排序指示器是什么?
- apache - Apache / mod_gnutls / GnuTLS 的 TLS 失败
- python - Python - 来自类实例数组的成员变量数组
- c# - DataBinding XML - 无法绑定到数据源
- javascript - 触摸并拖动取消点击桌面 Chrome
- javascript - 开玩笑 - 你如何测试状态属性已随 Styled 组件发生变化
- python - 当前列最后一个非零时获取另一列的值(熊猫数据框)
- javascript - Javascript:等待动态加载的脚本准备好
- c - 使用 while 循环查找 n 个自然数之和得到不想要的结果