我有一张这样的桌子
id name amount
1 fish 120
1 meat 230
2 meat 110
2 fish 78
1 salad 50
3 meat 103
3 salad 22
2 salad 34我想要写一个查询,它将对名称进行分组并对其金额求和,但它应该限制在前两个id,因此按名称对项目进行分组并对每个匹配的名称求和……这应该将其限制为前两个id。这只是id 1和2。留下账号3。注意。ID是来自另一个表的外键。
这就是我尝试过的。但它不起作用
select name, sum(amount) from table1 group by amount, id order by id limit 2在进行计算后,该函数仅输出2个结果
name amount
fish 198
meat 443我正期待着这样的事情。
name amount
fish 198
meat 340
salad 84将id仅为1和2的项的数量相加,并按名称分组
发布于 2017-08-01 20:16:10
您不希望限制总输出,但希望在它生成sum之前对其进行限制,因此可以使用子查询。
select t1.name, sum(t1.amount)
from table1 t1 join
(select tt1.id
from table1 tt1
group by id
order by id
limit 2
) t2
on t1.id = t2.id
group by t1.name;工作示例link
结果:
name sum(t1.amount)
fish 198
meat 340
salad 84发布于 2017-08-01 20:13:16
SELECT name, sum(amount)
FROM table1
WHERE id <= 2
GROUP BY name
ORDER BY name发布于 2017-08-01 20:13:31
前两个ids是什么?如果我假设你指的是“全局”,那么:
select t1.name, sum(t1.amount)
from table1 t1 join
(select tt1.id
from table1 tt1
group by id
order by id
limit 2
) tt1
on t1.id = tt1.id
group by t1.name;https://stackoverflow.com/questions/45437431
复制相似问题