gpt4 book ai didi

SQL(ite) 将 AB 与 BA 组组合

转载 作者:行者123 更新时间:2023-12-01 17:35:31 25 4
gpt4 key购买 nike

游戏数据库包含比赛配对的列,例如A国对阵B国,C国对阵D国,还有B国对阵A国。我需要简单地计算两个国家之间的比赛次数。我可以按国家A,国家B 进行分组,结果例如这个:

A B 12
A C 24
F G 2
B A 15

现在我需要结合 AB 和 BA 来得到这个:

A B 27
A C 24
F G 2

我尝试了下面的查询,但也意识到为什么它不起作用。我没有主意了。

SELECT country_1, country_2, t1.count + t2.count AS count, total 
FROM (SELECT country_1, country_2, COUNT(*) AS count
FROM games
WHERE tournament_code=?
GROUP BY country_1, country_2) t1
LEFT JOIN (SELECT country_1, country_code_2, COUNT(*) AS count
FROM games
WHERE tournament_code=?
GROUP BY country_1, ccountry_2) t2
ON t1.country_1=t2.country_2 AND t1.country_2=t2.country_1

我觉得我缺少一个非常简单的解决方案。有什么想法吗?

最佳答案

有一个简单的解决方案,确实是一个很好的技巧,您可以在这里使用。您可以按两个国家/地区中“较小”国家的组合进行分组,然后再按两个国家/地区中“较大”国家/地区的组合进行分组。使用这种方法,A, B将被视为与 B, A 位于同一组中。然后,汇总每个组的计数以获得您想要的结果。

SELECT MIN(country_1, country_2) AS country_1,
MAX(country_1, country_2) AS country_2,
SUM(count) AS count
FROM games
-- WHERE tournament_code = ?
GROUP BY MIN(country_1, country_2),
MAX(country_1, country_2)

SQLite 的一个有用特性是它有一个标量 MIN()函数,给定两个参数,可以返回这两个参数中较小的一个(另请参阅 MAX() )。

关于SQL(ite) 将 AB 与 BA 组组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42923116/

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