【问题标题】:Group By Clause - Need Assistance按条款分组 - 需要帮助
【发布时间】:2019-09-13 20:30:52
【问题描述】:

这是我的第一篇文章。我是 SQL 新手。我有以下代码,我添加了MAX,这样我就不会收到错误:

必须聚合或在 GROUP BY 子句中

最后,我想GROUP BYplayerID 只用 AB,HRs,按玩家 (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

提前致谢

【问题讨论】:

  • 欢迎来到 Stack Overflow!从查询和解释中很难推断出您想要什么。为了使您的问题更容易理解,您需要共享表 PeopleBatting 的一些样本数据记录,以及相应的预期输出。
  • 另外,您能否用您正在使用的 RDBMS 标记您的问题:mysql、oracle、sql-server...?
  • 当前查询有什么问题?
  • 查询本身没有问题,我的问题是我真的需要在没有聚合的列名前面添加 MAX 吗?

标签: sql sql-server group-by


【解决方案1】:

如果您想选择所有这些列而不对其进行聚合,则必须将它们包含在 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

【讨论】:

    猜你喜欢
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    相关资源
    最近更新 更多