SQL查询:如何将商品累计销量与对应商品单价相乘计算总金额
SQL查询实现方案
你可以通过关联商品表tblartikel和订单表tblbestallning,在聚合计算后直接相乘得到对应商品的总销售金额,两种常用实现方式如下:
方式1:单次关联聚合查询(更推荐)
SELECT a.artikelid, SUM(b.amount) AS AmountSold, a.price, SUM(b.amount) * a.price AS TotalSalesAmount FROM tblbestallning b INNER JOIN tblartikel a ON b.artikelid = a.artikelid GROUP BY a.artikelid, a.price
该写法直接在一次查询中完成表关联、销量聚合、金额计算,执行效率更高。因为artikelid是tblartikel的主键,单个商品对应唯一单价,分组时加入price字段不会影响聚合结果,符合所有主流数据库的分组语法规范。
方式2:复用你已有的聚合查询作为子查询
如果你希望保留已经写好的销量统计逻辑,可以将其作为子查询和商品表关联计算:
SELECT s.artikelid, s.AmountSold, a.price, s.AmountSold * a.price AS TotalSalesAmount FROM ( SELECT artikelid, SUM(amount) AS AmountSold FROM tblbestallning GROUP BY artikelid ) s INNER JOIN tblartikel a ON s.artikelid = a.artikelid
注意事项
- 如果需要统计从未产生过销量的商品,将上述语句中的
INNER JOIN替换为LEFT JOIN即可,同时可以使用COALESCE(AmountSold, 0)把空销量值转为0,避免金额计算结果为NULL。 - 如果你需要统计全店所有商品的总销售金额,只需在外层套一层
SUM(TotalSalesAmount)的聚合即可。
内容的提问来源于stack exchange,提问作者Hugo Polstam
相关产品推荐
相关产品推荐

