SQL面试题更新 2026-08-03

请写出SQL语句,实现按商品统计其累计销售数量和对应的订单总金额,输出商品维度的汇总结果。

考察说明

考察编写SQL实现分组聚合查询的能力,涉及JOIN、GROUP BY和SUM聚合函数。

回答思路

  1. 【回答框架 1】首先明确涉及的表:通常有订单明细表包含商品ID、销售数量和订单金额,可能关联订单表获取总金额。核心是使用GROUP BY按商品分组,使用SUM聚合函数汇总数量和金额。
  2. 【回答框架 2】如果销售数量和订单金额在明细表,直接SELECT 商品ID, SUM(数量) AS 销售总数量, SUM(金额) AS 订单总金额 FROM 明细表 GROUP BY 商品ID。
  3. 【回答框架 3】如果订单金额在订单表,需要先按订单ID汇总明细的数量和金额,再与订单表关联获取总金额,注意避免重复计算:先明细按订单ID聚合,再JOIN订单表,最后按商品ID分组。
  4. 【回答框架 4】确保只统计有效订单,可能使用WHERE过滤状态字段,并考虑金额为空或数量为0的情况,使用COALESCE处理。
  5. 【回答框架 5】优化要点:使用合适的索引(商品ID、订单ID),关注数据量大时的性能,避免SELECT *,只选取必要列。
  6. 【关键点 1】使用GROUP BY和SUM实现按商品汇总
  7. 【关键点 2】注意多表关联时防止数据膨胀导致重复计算
  8. 【关键点 3】使用COALESCE处理NULL值
  9. 【易错点 1】直接JOIN订单表可能因一个订单多件商品导致金额重复求和
  10. 【易错点 2】忽略订单状态过滤导致统计无效订单
  11. 【易错点 3】没有处理NULL值造成结果不准确