sql - 集合的自内连接、聚合和求和

标签 sql postgresql

我有以下架构:

CREATE TABLE aTable
    ("id" int, "idOfOperation" varchar(10), "uniqueName" varchar(6), "randomNumber" int)
;

INSERT INTO aTable
    ("id", "idOfOperation", "uniqueName", "randomNumber")
VALUES
    (1, 'operation1', 'model1', 3),
    (2, 'operation1', 'model2', 5),
    (3, 'operation2', 'model2', 43),
    (4, 'operation2', 'model3', 57),
    (5, 'operation2', 'model4', 65)
;

约束:

  • (idOfOperation, uniqueName) 是唯一的。

表包含不同操作(operation1、operation2)的结果,并且该操作有多个子模型(model1、model2、model3、model4)和一些唯一值(randomNumber)。

我需要达到的目标:

  • 创建一个查询,该查询将查找具有以下输出的两个操作集(操作 1、操作 2)的总和: 'model2', 5.18, 'model2', 43.2

我已经尝试过以下内部连接:

select r1.*, r2.*
from aTable r1
         inner join aTable r2
         on (r1."uniqueName" = r2."uniqueName" and r1."idOfOperation" != r2."idOfOperation")
where (r1."idOfOperation" = 'operation1' or r1."idOfOperation" = 'operation2')

但结果包含两行而不是一行(交换值):

id  idOfOperation   uniqueName  randomNumber    id  idOfOperation   uniqueName  randomNumber
3   operation2  model2  43  2   operation1  model2  5
2   operation1  model2  5   3   operation2  model2  43

预期结果是:

operation2, operation1, model2, 43, 5

如果有任何帮助,我将不胜感激。

最佳答案

请使用下面的查询,

select split_part(idOfOperation, ',', 2) as col1, split_part(idOfOperation, ',', 1) as 
col2,  uniqueName as col3, split_part(randomNumber, ',', 2) as col4, 
split_part(randomNumber, ',', 1) as col5 from
(select STRING_AGG ("idOfOperation", ',') as idOfOperation , "uniqueName" as 
uniqueName, STRING_AGG ("randomNumber"::text, ',') as randomNumber
from aTable  group by "uniqueName") qry where split_part(idOfOperation, ',', 2) != '';

截取您的预期结果,

enter image description here

关于sql - 集合的自内连接、聚合和求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62066286/

相关文章:

sql - 协助编写复杂 SQL 查询的最佳工具?

仅在 Linux 上的 PostgreSQL 密码验证失败

mysql - 从 3 个表中进行 SQL SELECT

php - 在 SQL 语句中,如果没有找到特定查询的任何内容,则返回一个条目

python - 与 Django 一起使用的 virtualenv python3 中的 psycopg2 出现问题

postgresql - 将字符串值传递给位数据类型在 Windows XP 中正常工作但在 Win Server 2003 中不正常

sql - 如何将SQL Server几何数据插入postgis几何数据类型列

macos - 无法登录系统用户postgres

mysql - 在 MySQL/PHP 中实现嵌套顺序集

sql - 在 SQL 查询中使用数字时为 "Could not convert variant of type (Null) into type (OleStr)"