gpt4 book ai didi

sqlite - SQLite的总和

转载 作者:行者123 更新时间:2023-12-03 19:16:07 27 4
gpt4 key购买 nike

假设我有两个看起来像这样的表:

Games:
| AwayTeam | HomeTeam | AwayPoints | HomePoints |
------------------------------------------------------
| Aardvarks | Bobcats | 2 | 1 |
| Bobcats | Caterpillars | 20 | 10 |
| Aardvarks | Caterpillars | 200 | 100 |

Teams:
| Name |
----------------
| Aardvarks |
| Bobcats |
| Caterpillars |


我怎样才能得到这样的结果?

| Name         | TotalPoints |
------------------------------
| Aardvarks | 202 |
| Bobcats | 21 |
| Caterpillars | 110 |




我认为我真正的问题是如何在SQL中将语句拼接在一起。这两个语句分别工作良好:

SELECT SUM ( AwayPoints ) 
FROM Games
WHERE AwayTeam='Bobcats';

SELECT SUM ( HomePoints )
FROM Games
WHERE HomeTeam='Bobcats';


我想如果要将两个 compound operator语句拼接在一起,就需要一个 SELECT。然后将该语句传递到下面的聚合表达式中:

SELECT   Name, SUM( aggregate_expression ) 
AS 'TotalPoints'
FROM Teams
GROUP BY Name;




如果我不得不将所有内容放在一起,我想我最终会得到这样的结果:

SELECT   Name, SUM (
SELECT SUM ( AwayPoints )
FROM Games
WHERE AwayTeam=Name
UNION
SELECT SUM ( HomePoints )
FROM Games
WHERE HomeTeam=Name
)
AS 'TotalPoints'
FROM Teams
GROUP BY Name;


但是,这不起作用,因为 SELECT SUM ( SELECT ...完全无效

最佳答案

使用UNION ALL

SELECT team, SUM(points)
FROM (
SELECT HomeTeam AS team, SUM(HomePoints) AS points
FROM Games
GROUP BY HomeTeam
UNION ALL
SELECT AwayTeam AS team, SUM(AwayPoints) AS points
FROM Games
GROUP BY AwayTeam
)
GROUP BY team


请参阅SQLite文档以获取


SELECT expr AS alias
SELECT ... FROM ( select-stmt ) AS table-alias

关于sqlite - SQLite的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52838161/

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