gpt4 book ai didi

sql - 计算一个 id 在两列中出现的次数

转载 作者:行者123 更新时间:2023-12-04 03:31:40 25 4
gpt4 key购买 nike

我有一个 matches 和一个 teams 表。这是一个 Db Fiddle .我正在使用 Postgres。

它们看起来像这样:

matches table

id_match | id_home | id_away | date_time
----------+---------+---------+---------------------
1 | 1 | 2 | 2018-11-03 16:30:00
2 | 1 | 3 | 2019-11-03 16:30:00
3 | 2 | 3 | 2019-11-03 16:30:00
4 | 3 | 1 | 2020-11-03 16:30:00

teams table

id_team | club | shorthand
---------+----------------+-----------
1 | Vinica | VIN
2 | Kolpa | KOL
3 | Crnomelj | CRN
4 | Klub Študentov | KBŠ
5 | Zilje | ZLJ
6 | Preloka | PRK

我正在尝试查询并加入两者以获得:

team name | total number of matches
----------+--------------------------
Vinica | 3
Kolpa | 2
Crnomelj | 3

我发现的难点是 team id 可以出现在 matches 表的两列中。

最佳答案

您可以使用横向联接对数据进行逆透视。然后加入并聚合:

select t.club, count(*)
from matches m cross join lateral
(values (m.id_home), (m.id_away)
) v(id_team) join
teams t
on t.id_team = v.id_team
group by t.club;

Here是 fiddle 。

关于sql - 计算一个 id 在两列中出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66681849/

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