postgresql - 在 SQL 查询中使用临时数据

标签 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"

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

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

我的问题是:如何将“组数据”获取到查询中?使用 WITH 子句并将其加入 maintable?或者将其添加到临时表并在后续查询中使用它?

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

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

为清晰起见进行了编辑

最佳答案

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

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;

关于postgresql - 在 SQL 查询中使用临时数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45030163/

相关文章:

SQL group by 列出每个名称的所有值

sql - 在 Postgres 9.5 中使用带 WITH 子句的更新插入时如何检索插入行的 ID?

mysql - 创建表时尝试在 sql 中读取 mm/dd/yyyy 格式

postgresql - 如何将从函数返回的 bool 值分配给 PostgreSQL 9.4 中的变量?

django - 从 Heroku 连接到 RDS Postgres

SQL替换查询

ruby-on-rails - 使用 Arel 按频率排序记录

postgresql - Grails 保存不尊重刷新选项

postgresql - 如何在postgres中的json数组上创建索引?

postgresql - 防止用户看到他们无权访问的对象