查出订单总额超出5000的所有订单,客户名称,客户所在地区。

SELECT d.`订单ID`,k.`公司名称`,d.`货主地区`,sum(m.`数量`*m.`单价`*(1- m.`折扣`)) AS 订单总额

FROM `订单` as d 

INNER JOIN 订单明细 as m on d.`订单ID`=m.`订单ID`

INNER JOIN 客户 as k on d.`客户ID`=k.`客户ID`

WHERE 订单总额 >5000

GROUP By m.`订单ID` 

where那里这样写为什么不行??求搭救

yzm443438 发布于 2021-6-25 19:33 (编辑于 2021-6-25 19:36)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
1
lgyxtaLv5初级互助
发布于2021-6-26 10:58(编辑于 2021-6-26 10:58)

正确的语句楼上的都可以的,我这里就不多写了。我就是简单的陈述一下出现这种问题的原因。

--------------------------------------------------------------------------------------------------

SQL的执行顺序是先执行WHERE再执行GROUP BY 的,但是由于你在查询中用了sum 那么这样执行顺序就会混乱的。如果他先执行 WHERE那么sum 后才是你的订单金额。在sum出现的时候一般要和GROUP BY同时出现的。不然就会像你这样出错的,一般的汇总后的过滤条件用HAVING 进行过滤的。如果不进行汇总之后作为过滤条件是不会报错的。像你上面的语句,如果用数量而不是订单总额。那么久不会报错了。

--------------------------------------------------------------------------------------------------

上述:就是报错的具体原因

最佳回答
2
zsh331Lv8专家互助
发布于2021-6-25 19:41

SELECT d.`订单ID`,k.`公司名称`,d.`货主地区`,sum(m.`数量`*m.`单价`*(1- m.`折扣`)) AS 订单总额

FROM `订单` as d 

INNER JOIN 订单明细 as m on d.`订单ID`=m.`订单ID`

INNER JOIN 客户 as k on d.`客户ID`=k.`客户ID`

GROUP By m.`订单ID`  having 订单总额  > 5000

————————————————

image.png

最佳回答
1
StudyYLLv6初级互助
发布于2021-6-25 21:06

select* from

(SELECT d.`订单ID`,k.`公司名称`,d.`货主地区`,sum(m.`数量`*m.`单价`*(1- m.`折扣`)) AS 订单总额

FROM `订单` as d 

INNER JOIN 订单明细 as m on d.`订单ID`=m.`订单ID`

INNER JOIN 客户 as k on d.`客户ID`=k.`客户ID`

GROUP By m.`订单ID` )

WHERE 订单总额 >5000

  • 4关注人数
  • 547浏览人数
  • 最后回答于:2021-6-26 10:58
    请选择关闭问题的原因
    确定 取消
    返回顶部