【发布时间】:2021-09-02 08:54:24
【问题描述】:
这是我遇到的一个有趣的问题。 我有一张桌子
create table phonebook(
customer_id (varchar 30)
call_start_day (date)
call_end_day (date)
call_start_time (varchar 30)
call_end_time (varchar 30)
called_number (integer)
customer_call_location_city (varchar 30)
customer_call_location_state (varchar 30)
customer_call_location_zip (integer)
called_number_city (varchar 30)
called_number_state (varchar 30)
)
我需要根据过去 12 个月的平均每月 call_duration 找到前 n 个客户。 (仅考虑完整的月份,例如,如果当前日期是 2021-03-07,则过去 12 个月:2020-03-01 – 2021-02-28。每月通话时长 = 总和(通话时长),其中通话时长 = 时差call_end_day+ call_end_time 和 call_start_day+call_start_time)
解决方案- 我想找出时间,然后找出它们的平均值。有什么建议吗?
【问题讨论】:
-
我删除了不一致的标签,请只标记您正在使用的数据库。还提供样本数据和所需的输出
-
RDBMS 的日期操作/转换函数不一致。所以选择一个,然后我们可以回答这个问题。
-
谢谢@eshirvana 示例类似于 - call_start_day(日期),例如,2021-03-02 - call_end_day(日期),例如,2021-03-02 - call_start_time(varchar 30),例如, 14:21:15 - call_end_time (varchar 30),例如,14:30:11 我为此使用 SSMS(sql server),但对 Oracle 分析功能甚至是开放的:P 和示例数据应该包含所有列和 1 个额外的列将按平均通话时长排序
标签: sql sql-server datetime aggregate-functions