SQL面试题更新 2026-08-05

请写出能够按订单分组统计商品总数量并输出每个订单对应汇总结果的 SQL 查询语句。

编码实现SQL

考察说明

考查对 SQL 分组聚合(GROUP BY 与聚合函数)基础语法的掌握。

回答思路

  1. 【回答框架 1】使用 GROUP BY 按订单标识列(如 order_id)分组,配合 SUM 对商品数量列(如 quantity)求和,即可得到每个订单的商品总数量。
  2. 【回答框架 2】查询语句基本结构为 SELECT order_id, SUM(quantity) AS total_quantity FROM 订单明细表 GROUP BY order_id;若表结构不同,需将 order_id 与 quantity 替换为实际列名。
  3. 【回答框架 3】若需过滤某些订单,可在 GROUP BY 前使用 WHERE;若需对聚合结果筛选,则应使用 HAVING,例如只显示总数量大于某值的订单。
  4. 【回答框架 4】注意聚合函数 SUM 对每行 quantity 求和,若 quantity 为 NULL,通常会被忽略,不会计入总和。
  5. 【回答框架 5】如有分组之外的列,必须出现在 GROUP BY 中或包裹在聚合函数里,否则在多数 SQL 方言中会报错。
  6. 【关键点 1】GROUP BY 用于分组,SUM 用于求和。
  7. 【关键点 2】SELECT 中非聚合列必须在 GROUP BY 中出现。
  8. 【关键点 3】WHERE 过滤行,HAVING 过滤分组后的结果。
  9. 【易错点 1】不能在 WHERE 中使用聚合函数条件,应使用 HAVING。
  10. 【易错点 2】混淆 SUM 与 COUNT:前者求和,后者计行数。
  11. 【易错点 3】分组列若存在 NULL,NULL 会被单独分为一组。