SQL面试题更新 2026-08-03

请用 SQL 写出查询语句,统计每个订单的订单总金额以及该订单所包含的商品总数量。

考察说明

考查对 SQL 分组聚合及多表关联查询的掌握程度。

回答思路

  1. 【回答框架 1】先明确订单与订单明细的关系:订单主表存储订单标识,订单明细表存储每个订单包含的商品及数量、单价,通过订单号关联。
  2. 【回答框架 2】使用 GROUP BY 按订单号分组,对明细表中的金额字段求和得到订单总金额,对数量字段求和得到商品总数量。
  3. 【回答框架 3】若金额需考虑折扣或税率,则按实际业务字段计算,如 SUM(单价*数量*(1-折扣率))。
  4. 【回答框架 4】若需包含无明细的订单,使用 LEFT JOIN 并处理 NULL 值,用 COALESCE 或 IFNULL 将聚合结果转为 0。
  5. 【回答框架 5】最终查询示例:SELECT 订单号, SUM(金额) AS 总金额, SUM(数量) AS 总数量 FROM 订单明细表 GROUP BY 订单号;若需订单其他信息,再关联订单主表。
  6. 【关键点 1】GROUP BY 按订单号分组,聚合函数 SUM 分别计算金额和数量。
  7. 【关键点 2】多表关联时注意使用 JOIN 类型,避免数据重复或丢失。
  8. 【关键点 3】处理 NULL 聚合结果,保证查询结果完整。
  9. 【关键点 4】金额计算需考虑单价、数量及可能的折扣或税率。
  10. 【关键点 5】若需展示订单其他字段,需在 GROUP BY 中列出或使用聚合函数。
  11. 【易错点 1】未关联订单主表导致订单信息缺失。
  12. 【易错点 2】GROUP BY 字段不完整导致分组错误。
  13. 【易错点 3】忽略 NULL 值导致聚合结果不准确。