【问题标题】:Average of multiple queries多个查询的平均值
【发布时间】:2014-04-07 22:17:00
【问题描述】:

我使用的是 Microsoft SQL Server 2008

我正在尝试获取前 3 个月的平均利润,然后获取上个月的利润,然后我想进行计算以将上个月的利润与前 3 个月的平均值进行比较。

所以例子:

当月利润总和 -2 本月利润总和 -3 本月利润总和 -4

(本月利润总和 -2 + 本月利润总和 -3 + 本月利润总和 -4)的平均值 = 前 3 个月的平均值

前 3 个月的平均值 / 上个月的利润总和 = 差异

我目前的代码是:

select SUM(profit)as 'threemonthavg'
from invoices
where DATEPART(MM, SHIPPED_DATE) = DATEPART(MM, Dateadd(MM, -2, getdate()))
and DATEPART(YYYY, shipped_date) = DATEPART(YYYY, Dateadd(MM, -2, getdate()))
union
select SUM(profit)
from invoices
where DATEPART(MM, SHIPPED_DATE) = DATEPART(MM, Dateadd(MM, -3, getdate()))
and DATEPART(YYYY, shipped_date) = DATEPART(YYYY, Dateadd(MM, -3, getdate()))
union
select SUM(profit)
from invoices
where DATEPART(MM, SHIPPED_DATE) = DATEPART(MM, Dateadd(MM, -4, getdate()))
and DATEPART(YYYY, shipped_date) = DATEPART(YYYY, Dateadd(MM, -4, getdate()))

这给了我 3 个单元格中每个月利润的总和。完美的。现在我想平均这些数字,所以我把它放在一个子查询中:

select AVG([threemonthavg])
from
(
select SUM(profit) as 'threemonthavg'
from invoices
where DATEPART(MM, SHIPPED_DATE) = DATEPART(MM, Dateadd(MM, -2, getdate()))
and DATEPART(YYYY, shipped_date) = DATEPART(YYYY, Dateadd(MM, -2, getdate()))
union
select SUM(profit)
from invoices
where DATEPART(MM, SHIPPED_DATE) = DATEPART(MM, Dateadd(MM, -3, getdate()))
and DATEPART(YYYY, shipped_date) = DATEPART(YYYY, Dateadd(MM, -3, getdate()))
union
select SUM(profit)
from invoices
where DATEPART(MM, SHIPPED_DATE) = DATEPART(MM, Dateadd(MM, -4, getdate()))
and DATEPART(YYYY, shipped_date) = DATEPART(YYYY, Dateadd(MM, -4, getdate()))
)x

...所以现在我有我的平均水平了。现在我需要上个月的利润,这很容易获得,但是如何将上述查询与上个月的利润查询合并以执行除法计算?我已经尝试了很多连接,但我无法正确获取语法。有人能指出我正确的方向吗?

【问题讨论】:

    标签: sql tsql subquery average divide


    【解决方案1】:

    为每个查询声明变量以存储到查询结果中,然后执行除法。这里有几个声明变量的例子............

    声明@iVariable INT、@vVariable VARCHAR(100)、@dDateTime DATETIME

    SET @iVariable = 1

    SET @vVariable = 'myvar'

    SET @dDateTime = GETDATE()

    选择@iVariable iVar、@vVariable vVar、@dDateTime dDT

    【讨论】:

      猜你喜欢
      • 2019-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多