gpt4 book ai didi

mysql 两个具有相同条目名称的表相加值

转载 作者:可可西里 更新时间:2023-11-01 07:37:47 25 4
gpt4 key购买 nike

我有一个基本上有足球比赛日历条目的表格,它看起来像这样

team1 || team1score || team2|| team2score || time || league

我想根据日历表中的条目更新我的职位表。

例如,如果我的 table 上有类似的东西

Pats   || 14 || Saints || 3  || 1stleague
Cows || 7 || falc || 14 || 1stleague
Saints || 31 || falc || 3 || 1stleague
Saints || 14 || cows || 3 || 1stleague

我想要一个查询,该查询将首先对具有不同 team1name 的 team1score 列中的所有值求和。所以对于上面的表格,它会给出结果

Pats   || 14
Cows || 7
Saints || 45

然后我想对 team2 和 team2score 做同样的事情,所以结果是

Saints || 3
falc || 17
cows || 3

然后我想加入这两个结果并得到:

Pats   || 14
Cows || 10
Saints || 48
falc || 17

我试过这样的

select distinct(t.team1), sum(t.team1score)
from calendar t
where league = '5a7'
UNION
select distinct(t2.team2), sum(t2.team2score)
from calendar t2
where league = '5a7'

但它不添加相同的团队分数有什么想法吗?

我知道我在进行并集时不会计算总和,但我认为我需要进行并集以保留 teams2 列中没有匹配团队的值。但是我不知道如何同时进行并集和求和。

最佳答案

使用子查询创建 team1 和 team2 列的并集,(仅)聚合外部查询中的分数:

SELECT LOWER(t.team) team, SUM(t.score) score
FROM (
SELECT team1 team, team1score score
FROM calendar
WHERE league='5a7'
UNION ALL
SELECT team2, team2score
FROM calendar
WHERE league='5a7'
) t
GROUP BY 1

编辑:在UNION 中,联合后的选择语句的名称/别名将被忽略。如果您认为它提高了可读性,您可以添加 teamscore。但是,这不是必需的。

编辑: 添加了 LOWER,即不区分大小写。

关于mysql 两个具有相同条目名称的表相加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10132458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com