我使用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...什么地方出问题了?
发布于 2021-12-02 14:35:58
我相信在您的第一个内部选择中缺少一个GROUP BY。在那里,您正在寻找SUM(Amount),但是您没有指定应该对哪些变量进行求和。
如果要对所有game.Stadiumid进行求和,则此代码适用于联盟的第一部分:
SELECT game.Stadiumid AS Stadiumid,SUM(Amount) AS Sum
FROM game,score
WHERE (game.Matchid=score.Matchid)
GROUP BY game.Stadiumid发布于 2021-12-02 14:35:02
您在这个子查询中错过了组
(SELECT game.Stadiumid AS Stadiumid,SUM(Amount) AS Sum
FROM game,score
WHERE (game.Matchid=score.Matchid)
GROUP BY game.Stadiumid -- missing group by
)https://stackoverflow.com/questions/70201216
复制相似问题