题解 | 确定最佳顾客的另一种方式(二)

SELECT
    c.cust_name,
    SUM(a.item_price * a.quantity) AS total_price
FROM
    OrderItems a
    INNER JOIN Orders b ON a.order_num = b.order_num
    INNER JOIN Customers c ON b.cust_id = c.cust_id
GROUP BY
    c.cust_id,
    c.cust_name
HAVING
    SUM(a.item_price * a.quantity) >= 1000
ORDER BY
    total_price 

1. WHERE子句中使用了别名列

WHERE子句中,你使用了total_price,这是在SELECT子句中定义的别名列。在SQL中,WHERE子句无法直接使用SELECT子句中定义的别名列。你需要在WHERE子句中使用完整的表达式。

2. WHERE子句的逻辑问题

即使你修复了WHERE子句中使用别名列的问题,WHERE子句中的条件total_price >= 1000也会导致逻辑错误。WHERE子句是在分组之前过滤数据的,而total_price是分组后的结果。因此,你应该使用HAVING子句来过滤分组后的结果。

全部评论

相关推荐

不愿透露姓名的神秘牛友
01-07 00:22
上海得物 Java开发 28*16 硕士985
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务