SQL面试题更新 2026-08-05

请编写一条SQL语句,用于从订单表中筛选出总金额超过100的订单记录,并展示这些订单的完整信息。

编码实现技术原理SQL

考察说明

考查候选人是否掌握SQL中的GROUP BY、HAVING以及聚合函数SUM的使用,并能够正确筛选分组后的数据。

回答思路

  1. 【回答框架 1】明确查询目标是订单,按订单编号分组,使用SUM函数计算每个订单的总金额。
  2. 【回答框架 2】使用GROUP BY对订单编号进行分组,将同一订单的金额相加。
  3. 【回答框架 3】使用HAVING子句筛选总金额大于100的组,HAVING应用于分组后的聚合结果。
  4. 【回答框架 4】注意HAVING与WHERE的区别,WHERE在分组前过滤行,不能使用聚合函数。
  5. 【回答框架 5】最终SQL语句为SELECT 订单编号, SUM(金额) AS 总金额 FROM 订单表 GROUP BY 订单编号 HAVING SUM(金额) > 100;
  6. 【关键点 1】使用SUM(金额)计算总金额,必须搭配GROUP BY订单编号。
  7. 【关键点 2】HAVING SUM(金额) > 100 用于筛选分组后总金额大于100的订单。
  8. 【关键点 3】WHERE无法替代HAVING,因为WHERE不能直接使用聚合函数。
  9. 【易错点 1】不要用WHERE SUM(金额) > 100,这是错误的,会导致SQL语法错误。
  10. 【易错点 2】如果订单表中存在订单明细行,必须按订单编号分组,否则会计算所有行的总金额。