mysql一列的最后一条记录,包括其他列和group by的总和

mysql一列的最后一条记录,包括其他列和group by的总和,mysql,sum,greatest-n-per-group,Mysql,Sum,Greatest N Per Group,表如下所示: id || name || team || goals || data 1 || Kitten || Pets || 3 || 12 2 || Dog || Pets || 2 || 11 3 || Kitten || Animals || 5 || 6 4 || Kitten || Cats || 4 || 3 5 ||

表如下所示:

id ||    name    ||  team    ||  goals  ||  data
1  ||    Kitten  || Pets     ||  3      ||  12
2   ||   Dog     ||  Pets    ||  2      ||  11
3   ||  Kitten   || Animals  ||  5      ||   6
4   ||  Kitten   || Cats     ||  4      ||   3
5   ||  Dog      ||  Pets    ||  2      ||   9
select * from table where id in(select max(id) from table group by team)
我的基本问题是: 按名称从表组中选择名称、团队、总和(目标)、总和(数据)

结果如下:

name    ||  team ||  sum(goals) ||  sum(data)
Kitten  || Pets  ||    12       ||   21
Dog     || Pets  ||     4       ||   20

我希望能够获得最新的团队(最高id),但到目前为止,我所能获得的只是列出的第一个团队以及编写的查询。我可以使用min(team)或max(team)按字母顺序获得第一个或最后一个团队,但这并不总是给出我需要的最后一个记录。帮忙?另外,很抱歉,我不知道如何在这里设置好格式。

有不同的方法,但这里有一种

您可以获得每个团队的最新记录,如下所示:

id ||    name    ||  team    ||  goals  ||  data
1  ||    Kitten  || Pets     ||  3      ||  12
2   ||   Dog     ||  Pets    ||  2      ||  11
3   ||  Kitten   || Animals  ||  5      ||   6
4   ||  Kitten   || Cats     ||  4      ||   3
5   ||  Dog      ||  Pets    ||  2      ||   9
select * from table where id in(select max(id) from table group by team)

我想这可能是你想要的:

SELECT name, team, SUM(goals), SUM(data)
FROM table t1
JOIN (SELECT team
      FROM table
      ORDER BY id DESC
      LIMIT 1) t2
ON t1.team = t2.team
GROUP BY name

你的问题有点让人困惑,你想得到
目标
数据
总和
和最高的
ID
?如果是这样,您可以使用
SELECT MAX(id)、name、team、SUM(goals)、SUM(data)…
来维护格式,粘贴文本,用鼠标标记,然后使用
{}
Ctl-k
将其标记为代码。只需确保在原始文本中不使用TAB,因为SO的制表位可能与您的制表位不同。