【发布时间】:2022-01-09 01:10:09
【问题描述】:
我使用 PGadmin4 SQL 服务器在 python 界面中编写了这个 SQL 查询。
它应该返回一个有序的(按总和降序,如果相等则按 StadiumID 升序),其中总和是在体育场内得分的进球数。如果体育场内没有任何比赛,则总和应为 0。
比赛桌记录了所有比赛,比赛发生在哪个体育场以及人群中有多少人
体育场表有体育场的数量和拥有它的球队
得分表有进球所在的比赛、进球的球员以及他进了多少球
数据库:
query = sql.SQL("
SELECT T.Stadiumid AS Stadiumid, T.SUM(Amount) AS Sum
FROM(
(SELECT game.Stadiumid AS Stadiumid,SUM(Amount) AS Sum
FROM game,score
WHERE (game.Matchid=score.Matchid)
)
UNION
(SELECT stadium.Stadiumid AS unplayedStadiumid,0 AS unplayedSum
FROM stadium
WHERE (stadium.Stadiumid NOT IN (SELECT game.Stadiumid FROM game))
)
) AS T
GROUP BY T.Stadiumid
ORDER BY T.Sum DESC,T.Stadiumid
")
执行查询时,我收到以下错误消息:
column "game.stadiumid" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: ...d AS Stadiumid, T.SUM(Amount) AS Sum FROM((SELECT game.Stadi...
似乎是什么问题?
【问题讨论】:
-
我假设您在
FROM语句的第一个 SELECT 中需要一个GROUP BY子句