【问题标题】:Average calls per week for each Month每个月每周平均通话次数
【发布时间】:2017-08-04 02:24:51
【问题描述】:

您好,我希望每个月的每周平均来电次数 此外,每个季度每周的平均通话次数 此外,每年每周的平均通话次数

我需要对上述每一项进行查询。谢谢您的帮助!

以下是原始数据集:

Name    Call        CallDate
Jack    Phone Call  2017-03-10
Laura   Meeting     2017-03-08
Helen   Phone Call  2017-02-02
Sam     Video Conf  2017-02-10
David   Skype       2017-01-01
Jack    Skype       2017-01-14
Laura   Video Conf  2014-03-09
Helen   Meeting     2017-02-12
Sam     Meeting     2017-02-12
David   Meeting     2017-03-09
David   Video Conf  2017-02-25
David   Skype       2017-02-20
Jack    Skype       2017-02-20
Jack    Phone Call  2017-03-10
Laura   Phone Call  2017-02-07
Laura   Skype       2017-02-07
Sam     Phone Call  2017-03-04
Sam     Phone Call  2017-03-04
Sam     Skype       2017-03-10

【问题讨论】:

  • 你的问题毫无意义。一周可以是 2 个月,甚至 2 年的一部分。做出这样的平均需要非常明确的规范

标签: sql-server average


【解决方案1】:

尽力而为,因为您的问题很奇怪。

这将计算每个月的通话次数除以该月的天数并乘以 7

;WITH CTE as
(
  SELECT 
    dateadd(month, datediff(month,0, cast(CallDate as datetime)), 0) month
  FROM yourtable
)
SELECT
  -- day(eomonth(month)) calculates the number of days in the month
  count(*)*7./day(eomonth(month)) avgweeklycallsmonth,
  month
FROM CTE
GROUP BY month

这将计算每个季度的通话次数除以该季度的天数并乘以 7

;WITH CTE as
(
  SELECT dateadd(quarter, datediff(quarter,0, CallDate), 0) quarter
  FROM yourtable
)
SELECT 
  count(*)*7./
    (datediff(day,dateadd(year, datediff(year, 0, quarter), 0),
      dateadd(month,3, quarter))) avgweeklycallsquarter, 
  quarter
FROM CTE
GROUP BY quarter

【讨论】:

  • 您好 t-clausen.dk。谢谢你的回答。我还想按姓名、月份和平均每周电话月数进行分组,我该怎么做?因此,结果应显示此人姓名的平均每周通话月数。感谢您的帮助!
  • 另外,您能否设置查询,以便我可以将查询添加到视图中并能够从表中选择任何列?谢谢
  • 您好 t-clausen.dk。当你说除以一个月的天数时,这是怎么做的?一个月有不同的天数
  • @peppe 您正在向此问题添加新问题。如果你需要新的答案。你需要问一个新问题。该月天数的计算已作为注释添加到代码中
  • 这看起来像是一个很好的猜测,可以围绕一个模糊的需求制定一些精确的规则。干得好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-12
  • 2018-12-19
  • 2018-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多