【发布时间】:2019-10-01 04:41:04
【问题描述】:
共有三列:Id(字符)、Name(字符)和Score(整数)。
首先,我们按Id 和Name 分组,并为每个组添加Score。让我们将添加的分数称为total_score。
然后,我们按Name 分组,只取total_score 及其对应的Id 和Name 中的最大值。我拥有其他一切,但我很难弄清楚如何获得Id。我得到的错误是
选择列表中的“Id”列无效,因为 它不包含在聚合函数或 GROUP BY 中 子句。
WITH Tmp AS
(SELECT Id,
Name,
SUM(Score) AS total_score
FROM Mytable
GROUP BY Id,
Name)
SELECT Name, -- Id,
MAX(total_score) AS max_score
FROM Tmp
GROUP BY Name
ORDER BY max_score DESC
【问题讨论】:
标签: sql sql-server