GROUP BY(MySQL 与 SQL 服务器)

Rya*_*don 1 mysql sql sql-server group-by

我对 GROUP BY 子句有一些问题。我最初在 MySQL 中教授 SQL,最近我转移到 SQL 服务器。但是,我真的很纠结于 GROUP BY 子句。

我习惯于能够创建查询,例如:

    SELECT Name,Team,Date, SUM(Figure) 
    FROM Table
    GROUP BY Name
Run Code Online (Sandbox Code Playgroud)

这会给我一个结果,例如:

    Name      Team     Date    Figure
    Ben        2       16/09     30
   Simon       4       16/09     55
Run Code Online (Sandbox Code Playgroud)

但是当我在 SQL Server 中编写相同的代码时,我必须对 select 子句中的所有列进行 GROUP BY 否则它会出错,这给了我

    SELECT Name,Team,Date, SUM(Figure) 
    FROM Table
    GROUP BY Name,Team,Date
Run Code Online (Sandbox Code Playgroud)

结果:

    Name      Team     Date    Figure
    Ben        2       16/09     10
    Ben        2       19/09     20
   Simon       4       16/09     35
   Simon       4       20/09     20
Run Code Online (Sandbox Code Playgroud)

这是因为它按名称、团队和日期分组。

我希望得到一个结果,就像我在 SQL 服务器中的 MySQL 中一样,但这似乎不可能。有没有人对这种情况有任何建议?

谢谢

Sim*_*mon 5

在 SQL Server 中使用时GROUP BY涉及的所有其他列都需要正确聚合。要实现您的结果,您需要:

    SELECT Name,Team,MIN(Date), SUM(Figure) 
FROM Table
GROUP BY Name,Team
Run Code Online (Sandbox Code Playgroud)

如果您想要使用更大的日期MAX而不是MIN. 我不熟悉 MySQL,但如果没有适当的聚合,你的结果应该是不可能的。因为 MySql 将如何知道在两者中选择哪个日期,如果Teams个人不同,它如何知道选择哪个?