计数/总计列的差异平均值

时间:2015-01-23 20:56:03

标签: sql sql-server

我在52周的时间内在原点和目的地之间有货运数据。我试图了 a)找出每周1到52之间的出发地和目的地之间的货物数量 b)找出no中的差异。每周之间的货运(第2周 - 第1周,第3周 - 第2周等) c)找出每个OD对的平均差异。

SELECT
   [Origin],
   [Destination],
   AVG(ABS(SUM(CASE 
      WHEN [DeliveryWeek] = 2 THEN 1 
      ELSE 0 
   END)-SUM(CASE 
      WHEN [DeliveryWeek] = 1 THEN 1 
      ELSE 0 
   END)) + ABS(SUM(CASE 
      WHEN [DeliveryWeek] = 3 THEN 1 
      ELSE 0 
   END)-SUM(CASE 
      WHEN [DeliveryWeek] = 2 THEN 1 
      ELSE 0 
   END)) + ABS(SUM(CASE 
      WHEN [DeliveryWeek] = 4 THEN 1 
      ELSE 0 
   END)-SUM(CASE 
      WHEN [DeliveryWeek] = 3 THEN 1 
      ELSE 0 
   END))

持续52周。

但它返回

  

无法对包含聚合或子查询的表达式执行聚合函数。

有更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

你能把这笔钱除以3吗?

SELECT [Origin], [Destination], 
       (ABS(SUM(CASE WHEN [DeliveryWeek] = 2 THEN 1 ELSE 0 END)-SUM(CASE WHEN [DeliveryWeek] = 1 THEN 1 ELSE 0 END)) +
        ABS(SUM(CASE WHEN [DeliveryWeek] = 3 THEN 1 ELSE 0 END)-SUM(CASE WHEN [DeliveryWeek] = 2 THEN 1 ELSE 0 END)) +
        ABS(SUM(CASE WHEN [DeliveryWeek] = 4 THEN 1 ELSE 0 END)-SUM(CASE WHEN [DeliveryWeek] = 3 THEN 1 ELSE 0 END))
       ) / 3