MySQL查询根据一个公共值对两个表中的一列求和并对另一列进行计数?

MySQL查询根据一个公共值对两个表中的一列求和并对另一列进行计数?,mysql,sql,group-by,sum,where-clause,Mysql,Sql,Group By,Sum,Where Clause,我在试图构建一个查询时遇到了一些问题。我希望这里能有点帮助 我有两张桌子。每个表有两列。其描述如下: 表:“代币” 表:“得分” 我需要一个查询,该查询将列出每个名称一次,并使用每个名称列出该名称的点数总和,以及where Color=“RED”的计数 表1的样本数据: "BOB","GREEN" "LARRY","RED" "JIM","BLUE" "JIM","RED" "FRANK","RED" "BOB","BLUE" "JIM","RED" 表2的样本数据: "LARRY",100

我在试图构建一个查询时遇到了一些问题。我希望这里能有点帮助

我有两张桌子。每个表有两列。其描述如下:

表:“代币”

表:“得分”

我需要一个查询,该查询将列出每个名称一次,并使用每个名称列出该名称的点数总和,以及where Color=“RED”的计数

表1的样本数据:

"BOB","GREEN"
"LARRY","RED"
"JIM","BLUE"
"JIM","RED"
"FRANK","RED"
"BOB","BLUE"
"JIM","RED"
表2的样本数据:

"LARRY",100
"BOB",40
"JIM",200
"BOB",100
"PAUL",250
我的表输出类似于(行顺序不重要):


我如何才能做到这一点?

您可以聚合,然后加入:

select t1.name, t1.reds, t2.points
from (select name, sum(color = 'RED') reds from table1 group by name) t1
inner join (select name, sum(points) points from table2 group by name) t2 
    on t1.name = t2.name
如果任一表中缺少
name
s,则可以使用
union all

select name, sum(reds) reds, sum(points) points
from 
    select name, 1 reds, 0 points from table1 where color = 'RED'
    union all
    select name, 0, points points from table2
) t 
group by name
BOB,140,0
LARRY,100,1
JIM,200,2
FRANK,0,1
PAUL,250,0
select t1.name, t1.reds, t2.points
from (select name, sum(color = 'RED') reds from table1 group by name) t1
inner join (select name, sum(points) points from table2 group by name) t2 
    on t1.name = t2.name
select name, sum(reds) reds, sum(points) points
from 
    select name, 1 reds, 0 points from table1 where color = 'RED'
    union all
    select name, 0, points points from table2
) t 
group by name