为什么我一直在SQL上得到相同的错误消息

问题描述 投票:0回答:3

概述:编写一份SELECT语句,总结吉他店的订单

GROUP BY order_id
HAVING MAX(discount_amount)>500
ORDER BY order_id ASC

我不断收到此错误消息:错误代码1055.选择列表的表达式#3不是

mysql sql
3个回答
0
投票

使用sum(quantity),因为你正在使用聚合函数,你也要以聚合的方式使用它,否则它需要在group by子句中添加

SELECT order_id, COUNT(*) AS num_items, SUM(item_price - discount_amount) * 
sum(quantity) AS order_total, MAX(discount_amount) AS max_item_discount
FROM order_items
GROUP BY order_id
HAVING MAX(discount_amount)>500
ORDER BY order_id ASC

0
投票

使用数量作为您的引擎ONLY_FULL_GROUP_BY

   SELECT order_id, COUNT(*) AS num_items, SUM(item_price - discount_amount) * 
    quantity AS order_total, MAX(discount_amount) AS max_item_discount
    FROM order_items
    GROUP BY order_id,quantity
    HAVING MAX(discount_amount)>500
    ORDER BY order_id ASC

其他明智的使用quantity内部聚合sum((item_price - discount_amount) * quantity)


0
投票

您有列数量不在分组中可能是您​​需要在item_price - discount_amount中移动te sum中的列

    SELECT order_id
        , COUNT(*) AS num_items
        , SUM((item_price - discount_amount) * quantity ) AS order_total
        , MAX(discount_amount) AS max_item_discount
    FROM order_items
    GROUP BY order_id
    HAVING MAX(discount_amount)>500
    ORDER BY order_id ASC
© www.soinside.com 2019 - 2024. All rights reserved.