这是我的第一篇文章。我是SQL新手。我有以下代码,我在其中添加了MAX
,以免出现错误:
必须聚合或在GROUP BY子句中
最终,我只想将GROUP BY
playerID 与AB,HR(按玩家(playerID)汇总)一起使用。我怎样才能解决这个问题?如何避免使用MAX
(或任何聚合)函数?我还能提供什么更多信息?
代码如下:
SELECT
MAX(teamID) AS teamID,
MAX(People.playerID) AS playerID,
MAX(People.nameFirst) AS nameFirst,
MAX(People.nameLast) AS nameLast,
MAX(CONCAT(People.nameFirst, ' ', People.nameLast)) AS 'Full Name',
MAX(CONCAT(People.birthCity, ', ', People.birthState, ', ', People.birthCountry)) AS 'Place of Birth',
SUM(Batting.AB) AS AB,
SUM(Batting.H) AS H,
SUM(Batting."2B") AS "2B",
SUM(Batting."3B") AS "3B",
SUM(Batting.HR) AS HR,
SUM(Batting.BB) AS BB,
SUM(Batting.HBP) AS HBP
FROM
People
JOIN Batting ON
Batting.playerID = People.playerID
WHERE
teamID = 'NYA' AND
nameFirst IS NOT NULL
GROUP BY
People.playerID
ORDER BY
'Full Name' ASC
提前谢谢。
答案 0 :(得分:0)
如果要选择所有这些列而不进行汇总,则必须将它们包括在GROUP BY子句中:
SELECT
teamID,
People.playerID,
People.nameFirst,
People.nameLast,
CONCAT(People.nameFirst, ' ', People.nameLast)) AS 'Full Name',
CONCAT(People.birthCity, ', ', People.birthState, ', ', People.birthCountry)) AS 'Place of Birth',
SUM(Batting.AB) AS AB,
SUM(Batting.H) AS H,
SUM(Batting."2B") AS "2B",
SUM(Batting."3B") AS "3B",
SUM(Batting.HR) AS HR,
SUM(Batting.BB) AS BB,
SUM(Batting.HBP) AS HBP
FROM People JOIN Batting
ON Batting.playerID = People.playerID
WHERE teamID = 'NYA' AND nameFirst IS NOT NULL
GROUP BY People.playerID,People.nameFirst,People.nameLast,People.birthCity,People.birthState,People.birthCountry
ORDER BY 'Full Name' ASC
这对行的分组没有任何问题,因为所有这些列都标识表People
的每一行