mysql - MySQL查询根据一个共同值对两个表中的一列求和并计算另一列?
问题描述
我在尝试构建一个查询时遇到问题。我希望在这里能得到一点帮助......
我有两张桌子。每个表有两列。它们描述如下:
表:“令牌”
Column 1: "Name" varchar(20)
Column 2: "Color" varchar(10)
表:“分数”
Column 1: "Name" varchar(20)
Column 2: "Points" Int
我想要一个查询,该查询将列出每个名称一次,并为每个名称列出该名称的点总和,以及 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
我的表输出将类似于(行顺序不重要):
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
如果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
推荐阅读
- python - Selenium Python:通过创建的循环获取正确属性和查找产品的问题
- javascript - 无法通过拆分数组中的字符串来创建新对象
- r - 从 R 中的参与者那里选择第二个观察结果
- c++ - glm::rotation 不能正常工作 OpenGL C++
- r - 根据条件返回列名,否则返回 NA
- javascript - 丢弃数组中的元素,拼接是答案吗?
- javascript - 会话过期问题有解决办法吗?
- python - 在 Python 中更新时出现 ProgrammingError pymysql.err.1064
- python - 在 CI/CD 管道中调用“git lfs pull”
- javascript - 单击链接以加载移动站点,但还保留 url 路径以加载精确的并行页面