0

我有一个表格,其中的数据看起来像这样。和是值,索引基于col1, ,和col2nodeIDDateHour

nodeID    col1    col2    Date      Hour
  1       8       4      1/1/2010     1
  2       2       7      1/1/2010     1
  3       1       2      1/1/2010     1
  4       6       3      1/1/2010     1     
 ...     ...     ...      ...        ...
  1       2       2      1/1/2013     1
  2       3       4      1/1/2013     1
  3       7       1      1/1/2013     1
  4       5       1      1/1/2013     1

我有另一个表,它根据天(不是小时)具有不同的权重,它看起来像这样,除了“foo”之外还有很多名字。每个名称将位于多行中,并且这些行中的每一行都将具有节点 ID 的权重因子。

特定日期的每个名称的权重加起来为 1。

name       nodeID    weighting        Date
foo          1         .6            1/1/2010
foo          2         .4            1/1/2010
foo          1         .6            1/1/2013
foo          2         .3            1/1/2013
foo          3         .1            1/1/2013
...         ...        ...           ...

我需要使用表 1 中父数据的加权平均值从所有名称中查询数据。

例如

name    col1     col2     Datecol    Hour
foo      5.6      5.2      1/1/2010    1
foo      2.8      2.5      1/1/2013    1

请注意,权重从 2010 年 1 月 1 日更改为 2013 年 1 月 1 日,甚至包括一个额外的nodeID.

4

1 回答 1

1
select 
    name, 
    sum(col1*weighting) as weightedCol1, 
    sum(col2*weighting) as weightedCol2,
    n.date, 
    [hour]
from
    nodes n
    inner join weights w
        on w.nodeid = n.nodeid
        and w.date = n.date
group by 
    name, n.date, [hour]
于 2013-03-06T00:11:27.213 回答