如何建立联接而又不计算第二张表中的双精度数?

问题描述 投票:0回答:1

我有2个表,我正在尝试建立查询,但是我没有正确的结果,有人可以帮我吗?

表1:

code|name
74|Jhon
06|Sara
92|Fred
75|Will
06|Sara
13|Lola

表2:

code|amount|folder
06|500|1
74|135|0
13|150|0
13|100|1
92|200|1
75|250|0
06|300|1

我想按名称选择文件夹的数量和总数以及具有0的文件夹数量。

我做了以下查询:

select table1.name,
sum(table2.amount) as amount_tot,
count(table2.folder) as nb_folder,
sum(table2.folder) as nb_folder_ko
from table1 inner join table2 on table1.code=table2.code
group by name

我得到以下结果:

name|amount_tot|nb_folder|nb_folder_ko
Lola|250|2|1
Fred|450|2|1
Sara|1600|4|4
Jhon|135|1|0

如您所见,关于我的源表,这是不正确的,我认为我的查询做了一些重复计算,但是我不知道如何解决它,请帮我:)

sql join inner-join
1个回答
0
投票

您会获得多对多的加入(而不是一对多)。在加入之前应用DISTINCT:

select table1.name,
sum(table2.amount) as amount_tot,
count(table2.folder) as nb_folder,
sum(table2.folder) as nb_folder_ko
from 
 ( 
   select distinct name, code 
   from table1
 ) as table1 
inner join table2 
on table1.code=table2.code
group by name

如果名称/代码组合不是唯一的,请切换到

   select max(name), code 
   from table1
   group by code 
© www.soinside.com 2019 - 2024. All rights reserved.