如何查询指定日期X的所有订单并统计维修总数与总消费金额
SQL查询实现方案
原有SQL问题说明
你写的SQL存在以下错误:
- 语法错误:
WHERE条件后直接拼接子查询,缺少关联逻辑,无法执行 - 未实现按指定日期过滤的核心需求
- 缺少维修总数量的统计逻辑
- 子查询的统计结果无法关联到主查询的结果展示
实现方案
首先说明:以下方案默认「指定日期X」匹配的是工单验收日期(Date_of_acceptance),如果你需要按截止日期统计,替换SQL中Date_of_acceptance字段为Date_of_deadline即可。
方案1:订单明细与统计值同屏展示(窗口函数实现,适合报表场景)
每条订单记录后都会附带该日期的总维修数量、总消费金额:
-- 替换下方'2021-10-09'为你需要查询的指定日期X SELECT ID AS 订单ID, Date_of_acceptance AS 验收日期, Date_of_deadline AS 截止日期, Status_order AS 订单状态, Type_of_repair AS 维修类型, Price AS 维修金额, COUNT(*) OVER() AS 当日维修总数量, SUM(Price) OVER() AS 当日维修总金额 FROM Orders WHERE Date_of_acceptance = '2021-10-09'
拿测试数据中2021-10-09验证:会返回4条对应订单,总数量为4,总金额为710.00。
方案2:分开返回订单列表和统计结果(适合前端展示场景)
第一条结果返回指定日期所有订单明细,第二条结果返回统计值:
-- 1. 查询指定日期所有订单列表 SELECT ID AS 订单ID, Date_of_acceptance AS 验收日期, Date_of_deadline AS 截止日期, Status_order AS 订单状态, Type_of_repair AS 维修类型, Price AS 维修金额 FROM Orders WHERE Date_of_acceptance = '2021-10-09'; -- 2. 查询指定日期维修总数量、总消费金额 SELECT COUNT(*) AS 维修总数量, SUM(Price) AS 维修消费总金额 FROM Orders WHERE Date_of_acceptance = '2021-10-09';
内容的提问来源于stack exchange,提问作者Petya
相关产品推荐
相关产品推荐

