按条款分组-需要帮助

时间:2019-09-13 20:30:52

标签: sql sql-server group-by

这是我的第一篇文章。我是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

提前谢谢

1 个答案:

答案 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的每一行