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 中一样,但这似乎不可能。有没有人对这种情况有任何建议?
谢谢
在 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个人不同,它如何知道选择哪个?