在SQL查询中使用临时数据

时间:2017-07-11 09:11:32

标签: postgresql postgresql-9.5

我有一张表格(maintable),格式为:

(id, intcol1, intcol2, intcol3, ...)

示例数据:

123, 582585, 25215718, 15519
234, 2583, 2371, 1841948
345, 42389, 234289, 234242

我想使用外部数据运行一些聚合计算来对数据进行分组。我的数据形式如下:

(id, groupcol)

示例数据:

123, "January",
234, "February"
345, "January"

在这种情况下,假设我希望intcol1的SUM使用提供的分组匹配ID,结果将是:

"January", 624974               # 42389 + 582585
"February", 2583

我的问题是:我如何获得"组数据"进入查询?使用WITH子句并将其加入maintable?或者将其添加到临时表并在以下查询中使用它?

我可以操作我拥有的数据并对其进行格式化,但是运行SQL查询的程序最简单。

什么是最好/最快/最简单的方法?

为清晰起见而编辑

1 个答案:

答案 0 :(得分:2)

这看起来像一个简单的连接和分组:

select t2.groupcol, 
       sum(t1.intcol1)
from maintable t1 
  join table_2 t2 on t1.id = t2.id
group by t2.groupcol;

如果你没有"外面"表格中的数据,您可以这样做:

select t2.groupcol, 
       sum(t1.intcol1)
from maintable t1 
  join (
    values 
      (123, 'January'), 
      (234, 'February'),
      (345, 'January')
  ) as t2 (id, groupcol) on t1.id = t2.id
group by t2.groupcol;