请编写一条SQL语句,用于从订单表中筛选出总金额超过100的订单记录,并展示这些订单的完整信息。
考察说明
考查候选人是否掌握SQL中的GROUP BY、HAVING以及聚合函数SUM的使用,并能够正确筛选分组后的数据。
回答思路
- 【回答框架 1】明确查询目标是订单,按订单编号分组,使用SUM函数计算每个订单的总金额。
- 【回答框架 2】使用GROUP BY对订单编号进行分组,将同一订单的金额相加。
- 【回答框架 3】使用HAVING子句筛选总金额大于100的组,HAVING应用于分组后的聚合结果。
- 【回答框架 4】注意HAVING与WHERE的区别,WHERE在分组前过滤行,不能使用聚合函数。
- 【回答框架 5】最终SQL语句为SELECT 订单编号, SUM(金额) AS 总金额 FROM 订单表 GROUP BY 订单编号 HAVING SUM(金额) > 100;
- 【关键点 1】使用SUM(金额)计算总金额,必须搭配GROUP BY订单编号。
- 【关键点 2】HAVING SUM(金额) > 100 用于筛选分组后总金额大于100的订单。
- 【关键点 3】WHERE无法替代HAVING,因为WHERE不能直接使用聚合函数。
- 【易错点 1】不要用WHERE SUM(金额) > 100,这是错误的,会导致SQL语法错误。
- 【易错点 2】如果订单表中存在订单明细行,必须按订单编号分组,否则会计算所有行的总金额。