请编写一条 SQL 语句,用于筛选出那些订单总金额高于其所属客户全部订单平均金额的订单记录。
考察说明
考查SQL子查询、聚合函数与关联查询的综合运用能力。
回答思路
- 【回答框架 1】核心思路是使用子查询计算每个客户的平均订单金额,然后将外层订单与该平均值进行比较。先按客户ID分组,用AVG(order_amount)计算每个客户的平均订单金额。
- 【回答框架 2】主查询选择订单表的订单ID和订单金额,通过关联条件客户ID相等,连接子查询结果,并限定订单金额大于对应客户的平均金额。
- 【回答框架 3】注意处理同一客户多订单和订单金额为空的情况,使用COALESCE或过滤空值。最终SQL可用内连接或相关子查询实现,确保逻辑正确且可读性好。
- 【关键点 1】使用GROUP BY和AVG聚合计算客户平均金额
- 【关键点 2】通过客户ID进行关联比较
- 【关键点 3】需使用JOIN或子查询实现筛选
- 【易错点 1】忘记对客户进行分组导致平均金额计算错误
- 【易错点 2】忽略订单金额为NULL的情况可能影响比较结果