sql - 联合所有和总和

标签 sql postgresql

我有 2 个表:

表 1

mmsi   type   l   w   flag   value
123    456    A   B   C      37
236    567    X   Y   Z      28

表2

mmsi   type   l   w   flag   value
123    456    A   B   C      30
234    567    X   Y   Z      20

我想运行一个查询来获取唯一值,并为每一行获取存储在最后一个字段中的值的总和:

决赛 table

mmsi   type   l   w   flag   value
123    456    A   B   C      67
234    567    X   Y   Z      20
236    567    X   Y   Z      28

我该怎么做?我正在尝试使用 UNION ALL 和 SUM

SELECT "mmsi", "type", "l", "w", "flag", "value", SUM ("value")
FROM (SELECT "mmsi", "type", "l", "w", "flag", "value" FROM "table 1" UNION ALL
SELECT "mmsi", "type", "l", "w", "flag", "value" FROM "table 2") as def
GROUP BY "mmsi", "type", "l", "w", "flag", "value"

但这给了我以下错误的结果:

mmsi   type   l   w   flag   value  sum
123    456    A   B   C      37     37
123    456    A   B   C      30     30
234    567    X   Y   Z      20     20
236    567    X   Y   Z      28     28

谢谢!

最佳答案

您需要从 selectgroup by 中删除 value:

SELECT "mmsi", "type", "l", "w", "flag", SUM("value")
FROM (SELECT "mmsi", "type", "l", "w", "flag", "value" FROM "table 1" 
      UNION ALL
      SELECT "mmsi", "type", "l", "w", "flag", "value" FROM "table 2"
     ) as def
GROUP BY "mmsi", "type", "l", "w", "flag";

关于sql - 联合所有和总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51746603/

相关文章:

mysql - 动态 SQL 查询用其他列中的值填充列

sql - 如何按计数行选择数据顺序

c# - DataGridView - 如何仅为单个列设置货币格式

mysql - sql连接具有不同值的同一列

sql - 如何在 postgres 数据库上切换两个 ID [PK]?

postgresql - 自动故障转移在 repmgr 中不起作用

java - 如何跟踪从应用服务器提交到 Oracle 数据库的所有查询?

java - 为什么反序列化加密对象时会出现 EOFException?

sql - RETURN QUERY-PostgreSQL 中的记录

sql - 这个sql算法的性能更好?