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