如果在Postgres中重复,则为SUM数据

时间:2016-01-02 07:20:09

标签: postgresql

我有三列的表,可能有重复的数据。我想要做的是,如果BATCH列有重复数据,那么START_S和END_S应该是根据下面的例子

CREATE TABLE "DRL_FTO3_DI1_A0_BATCH"
(
  "BATCH" character varying(128),
  "START_S" integer,
  "END_S" integer
)

INSERT INTO "DRL_FTO3_DI1_A0_BATCH"(
            "BATCH", "START_S", "END_S")
    VALUES ('Batch 1_1',1451120920,1451121008),
    ('Batch 01_2',1451389014,1451389100),
('Batch 2_1',1451534680,1451534918),
('Batch 3_1',1451539145,1451539264),
('Parth_2',1451540990,1451541285),
('Parth_2',1451541676,1451542254)

SELECT "BATCH",((TIMESTAMP WITHOUT Time Zone 'epoch' + "START_S" * INTERVAL '1 second') AT TIME ZONE 'UTC')::TIMESTAMP WITHOUT Time Zone,
((TIMESTAMP WITHOUT Time Zone 'epoch' + "END_S" * INTERVAL '1 second') AT TIME ZONE 'UTC')::TIMESTAMP WITHOUT Time Zone
FROM "DRL_FTO3_DI1_A0_BATCH"

现在我们可以看到Parth_2是重复值,因此Parth_S的START_S和END_S应该是

Parth_2      2015-12-31 11:19:50       2015-12-31 11:40:54

1 个答案:

答案 0 :(得分:1)

您可以使用GROUP BY和MIN / MAX聚合函数(您可以稍后使用以下格式转换为日期时间),例如:

SELECT BATCH, MIN(START_S), MAX(END_S)
FROM DRL_FTO3_DI1_A0_BATCH
GROUP BY BATCH