SQL有关获取重复行总和的问题

问题描述 投票:1回答:1

这是我的SQL查询,以获得下表:

select c.name, s.company, p.qty, p.qty * p.price as Total
from client c, purchase p, stock s
where c.clno = p.clno AND s.company = p.company
group by c.name, s.company, p.qty, p.qty * p.price
order by sum(p.qty) desc

上述查询的输出如下所示:

Name  |  Company  |  Qty  |  Total
John      ABC         12       100
Bob       XYZ         10       150
John      ABC          5        50
Bob       XYZ         20       250
Bob       XYZ          2        20
Nav       QRS         10       150
John      ABC         10       150

我想让查询获取输出如下:

Name  |  Company  |  Qty  |  Total
John      ABC         27       300
Bob       XYZ         32       420
Nav       QRS         10       150
mysql sql
1个回答
1
投票

截至目前,您的查询使用GROUP BY但实际上并未聚合数据。你想要GROUP BY名称和公司,以及SUM的数量和数量,如:

select c.name, s.company, SUM(p.qty), SUM(p.qty * p.price) as Total
from client c
inner join purchase p on c.clno = p.clno
inner join stock s on s.company = p.company
group by c.name, s.company
order by Total desc

关于您的查询的其他评论:

  • 总是使用显式连接而不是隐式连接
  • 你可以在ORDER BY子句中使用列别名(这里,Total;这可以使查询更容易阅读
© www.soinside.com 2019 - 2024. All rights reserved.