【问题标题】:SQL month to day average (auto)SQL 月平均(自动)
【发布时间】:2017-10-24 16:15:35
【问题描述】:

SQL中如何计算平均使用天数?

例如,我可以使用 today()-20171001 来计算它在 excel 中的平均使用是 22,它是自动的。

我需要计算计算机在 2017 年 10 月到今天的平均值。

表格:计算机数据

date       |    property   |    computer code | value
----------      --------        -----------    -------
20160131   |   companyA   |     256584        | 1,000
20160131   |   companyB   |     987451        | 1,200
...
20171022   |   companyA   |     157489        | 1,600
20171022   |   companyA   |     589741        | 1,400
20171022   |   comapnyA   |     547182        | 2,750

sql:

select property
,sum (case when  property = 'companyA' then value end) / ( the code I have asked - the answer should be 22, 20171023-20171001) as avgvalue_computer

from computer table

group by property
order by property

我想要的结果

property | avgvalue_computer
companyA | 8,500         <- 2017-Oct-01 to 2017-Oct-23 (today)
companyB | 16,800        <- 2017-Oct-01 to 2017-Oct-23 (today)

【问题讨论】:

  • 也许 datediff(day, '20171001', getdate())?或者也许只是平均(价值)? Avg 还将处理丢失的日期。如果每天有超过一条记录,那么您将需要更多逻辑
  • datediff(day, '20171001', getdate()) 很有用!!!谢谢!!!

标签: sql-server-2014


【解决方案1】:
    DECLARE @Table TABLE (Date DATE, Property VARCHAR(20), PropertyCode INT, [Value] FLOAT)
INSERT INTO @Table VALUES
('20161031','cA', 256584, 1000)
SELECT Property CompanyName, MTD.Value, MTD.DateFrom, MTD.DateTo
FROM @Table T1
CROSS APPLY (SELECT AVG(VALUE) Value, DATEADD (D,
                                DATEPART(DAY, GETDATE()) *-1, 
                                 GETDATE()) DateFrom, GETDATE() DateTo
           FROM @Table T2
           WHERE T2.PropertyCode = T1.PropertyCode
           AND T2.Date BETWEEN (DATEADD (D,
                                DATEPART(DAY, GETDATE()) *-1, 
                                 GETDATE())) 
                    AND     GETDATE()
       ) MTD

【讨论】:

    【解决方案2】:

    选择属性 ,sum(属性 = 'companyA' 然后值结束的情况)/ datediff(day, '20171001', getdate())) as avgvalue_computer

    从电脑桌

    按属性分组 按属性排序

    【讨论】:

      猜你喜欢
      • 2020-07-09
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 2016-10-02
      • 2021-05-08
      • 2014-02-22
      • 1970-01-01
      相关资源
      最近更新 更多