javascript - 在行中对按其他列 ID 分组的一些其他列行值求和

标签 javascript jquery postgresql sum

是否可以进行这样的查询?我有 ID、一些 IN 值、Out 值,最后一列 TOTAL 是 IN 和 OUT 之差的总和。我真的需要完整的金额。 等于的 ID2 行必须在 SUM 列中求和。 ID2的个数没有固定的,有的时候是一行求和,有的时候会更多。我还可以添加一个差异列,以仅对相同 ID2 的该行中的值求和。

我的疑问是,是否可以连续求和,在其他列的某些行中累积?

ID  ID2 IN  OUT TOTAL (IN-OUT)
1   2   200 150 blank-null-space-or whatever but a character
2   2   350 250 doesn't matter, also it can have the same SUM result as below
3   2   600 400 350 ( = 200 - 150 + 350 - 250 + 600 - 400)
4   3   100  80  20  

或者我必须在客户端用 JavaScript 完成?哪个更好或者你建议?也许在 JavaScript 中更容易,但我想一步完成所有操作以减少池连接。

一个简单的可验证示例是

CREATE TABLE "table1" (
  "ID" int NOT NULL,
  "ID2" int DEFAULT NULL,
  "`EXT_ID" int DEFAULT NULL,
  "IN" int DEFAULT NULL
  "OUT" int DEFAULT NULL
);

INSERT INTO "table1" ("ID", "ID2", "EXT_ID", "IN", "OUT") VALUES
(1, 2, 1, 200, 150),
(2, 2, 2, 350, 250),
(3, 2, 2, 600, 400),
(4, 3, 4, 100,  80),
(5, 3, 5, 130, 100),
(6, 4, 6, 100,  80),
(7, 4, 7, 120,  70),
(8, 4, 7, 150,  90);

编辑:添加了一个外部 ID 列“EXT_ID”,该列的条件仅显示一行,并且具有来自同一“ID2”的 MAX 值。

更正了 SQL 语法。

最佳答案

已编辑

是的,这是可能的。您可以使用分组依据(如果您只想要总数)

CREATE TABLE "table1" (
  "ID" int NOT NULL,
  "ID2" int DEFAULT NULL,
  "EXT_ID" int DEFAULT NULL,
  "IN" int DEFAULT NULL,
  "OUT" int DEFAULT NULL
);

INSERT INTO "table1" ("ID", "ID2", "EXT_ID", "IN", "OUT") VALUES
(1, 2, 1, 200, 150),
(2, 2, 2, 350, 250),
(3, 2, 2, 600, 400),
(4, 3, 4, 100,  80),
(5, 3, 5, 130, 100),
(6, 4, 6, 100,  80),
(7, 4, 7, 120,  70),
(8, 4, 7, 150,  90);

select "ID2", sum("IN" - "OUT")
  from "table1"
  group by "ID2";

result 1

旧答案:

是的,这是可能的。你可以使用窗口函数

CREATE TABLE "table1" (
  "ID" int NOT NULL,
  "ID2" int DEFAULT NULL,
  "IN" int DEFAULT NULL,
  "OUT" int DEFAULT NULL
);

INSERT INTO "table1" ("ID", "ID2", "IN", "OUT") VALUES
(1, 2, 200, 150),
(2, 2, 350, 250),
(3, 2, 600, 400),
(4, 3, 100,  80);

select * , sum("IN" - "OUT") over (partition by "ID2" order by "ID")
  from "table1"
  order by "ID2", "ID";

result 2

如您在 https://www.postgresql.org/docs/current/static/functions-window.html 中所见

一个功能示例:http://rextester.com/OVCTC74070

关于javascript - 在行中对按其他列 ID 分组的一些其他列行值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44895741/

相关文章:

javascript - 如何在循环单击时获取按钮的 ID

javascript - 默认禁用表单输入。启用它们 onClick of <a>。禁用不同 <a> 的 onClick

javascript - 将回调绑定(bind)到没有隔离范围的指令

javascript - 为什么我的 Google Chrome 扩展程序不能在这个特定页面上运行?

jquery - 如何通过 jQuery 更改浏览器上 HTML 表格的宽度

javascript - 单击外部按钮时触发表单上所需的事件

javascript - *.intellisense.js 和 _references.js 中的条目之间的区别

postgresql - 管理数以万计的桌面应用程序用户访问 PostgreSQL 数据库的最佳解决方案

python - 为什么我需要处置 postgresql sqlalchemy 引擎?

ruby-on-rails - 为什么 ActiveRecord 对我的新表设置了不需要的外键约束?