表之间的左连接和求和给出了一个奇怪的结果 - PostgreSQL

时间:2014-04-11 08:59:56

标签: database postgresql

以下是两个表格。

表1:

Label   value
A   10
A   18
A   15
B   11
B   20
B   10
C   17
C   17
C   18

表2:

Label   count
A   20
A   17
A   11
B   20
B   17
B   17
C   14
C   20
C   19

我正在运行此查询。

SELECT
    Table1."label",
    sum("value"),
    sum("count")
FROM Table1
LEFT JOIN Table2 ON
    Table1."label" = Table2."label"
GROUP BY Table1."label"

结果我需要得到的就是这个。

label   value   count
A   43  48
B   41  54
C   52  53

但我得到的是。

label   value   count
A   12491   12346
B   213295  1243456
C   1578105 123434

我不知道为什么会得到这个结果。

如果我在查询中做错了,请帮我解决。

我刚刚进入PostgreSQL和数据库。

1 个答案:

答案 0 :(得分:0)

您的结果有三列。 标签,总和(值),总和(计数) 所以

label   sum
A   12491
B   213295
C   1578105
你看到的是:

a 124 91
b 2132 95
c 15781 105

空间是什么? 看到我的EXP:

digoal=# create table t1(id int, v int);
CREATE TABLE
digoal=# create table t2(id int, c int);
CREATE TABLE
digoal=# insert into t1 values (1,10);
INSERT 0 1
digoal=# insert into t1 values (1,20);
INSERT 0 1
digoal=# insert into t1 values (1,30);
INSERT 0 1
digoal=# insert into t1 values (2,10);
INSERT 0 1
digoal=# insert into t1 values (2,20);
INSERT 0 1
digoal=# insert into t1 values (2,30);
INSERT 0 1
digoal=# insert into t1 values (3,10);
INSERT 0 1
digoal=# insert into t1 values (3,20);
INSERT 0 1
digoal=# insert into t1 values (3,30);
INSERT 0 1
digoal=# insert into t2 select * from t1;
INSERT 0 9
digoal=# select t1.id,sum(v),sum(c) from t1 left join t2 on t1.id=t2.id group by t1.id;
 id | sum | sum 
----+-----+-----
  1 | 180 | 180
  2 | 180 | 180
  3 | 180 | 180
(3 rows) 

您可以设置fieldsep来查看。

pg93@db-172-16-3-150-> psql -A
psql (9.3.3)
Type "help" for help.
digoal=# \pset fieldsep ,
Field separator is ",".

digoal=# select t1.id,sum(v),sum(c) from t1 left join t2 on t1.id=t2.id group by t1.id;
id,sum,sum
1,180,180
2,180,180
3,180,180
(3 rows)