逻辑没问题,查的是小于2000,结果查出来天文数字

-- 26. 检索出职务为销售代表的所有订单中,每笔订单总额低于2000的订单明细,以及相关供应商名称--------------------------------------------------------------------注意!!!!

SELECT d2.`订单ID`,d2.`产品ID`,d2.`单价`,d2.`折扣`,d2.`数量`,g.`公司名称`,sum(d2.`单价`*d2.`数量`*(1-d2.`折扣`))  as  '订单总额'

FROM  `客户` as   k

   join   `订单`     as  d   on  k.`客户ID`=d.`客户ID`

join   `订单明细` as  d2  on  d.`订单ID`=d2.`订单ID`

join   `产品`     as  c   on  c.`产品ID`=d2.`产品ID`

join    `供应商`  as  g   on  g.`供应商ID`=c.`供应商ID`

where k.`联系人职务`='销售代表'

GROUP BY d2.`订单ID`,d2.`产品ID`,d2.`单价`,d2.`折扣`,d2.`数量`,g.`公司名称`

HAVING  sum(d2.`单价`*d2.`数量`*(1-d2.`折扣`)) <  2000  ;

image.png

SQL 帆软用户QdKdX0cTDi 发布于 2025-1-12 09:57 (编辑于 2025-1-12 12:55)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
CD20160914Lv8专家互助
发布于2025-1-12 10:30(编辑于 2025-1-12 13:08)

最后的订单金额   要写

having sum(你上面那一段)<2000

只要这一段:

image.png

或者是你再多套一层

select t.* from (

SELECT d2.`订单ID`,d2.`产品ID`,d2.`单价`,d2.`折扣`,d2.`数量`,g.`公司名称`,sum(d2.`单价`*d2.`数量`*(1-d2.`折扣`))  as  '订单总额'

FROM  `客户` as   k

   join   `订单`     as  d   on  k.`客户ID`=d.`客户ID`

join   `订单明细` as  d2  on  d.`订单ID`=d2.`订单ID`

join   `产品`     as  c   on  c.`产品ID`=d2.`产品ID`

join    `供应商`  as  g   on  g.`供应商ID`=c.`供应商ID`

where k.`联系人职务`='销售代表'

GROUP BY d2.`订单ID`,d2.`产品ID`,d2.`单价`,d2.`折扣`,d2.`数量`,g.`公司名称`

)t

where t.订单总额<2000

  • 2关注人数
  • 33浏览人数
  • 最后回答于:2025-1-12 13:08
    请选择关闭问题的原因
    确定 取消
    返回顶部