Почему я продолжаю получать одно и то же сообщение об ошибке в SQL - PullRequest
0 голосов
/ 08 марта 2019

Обзор: написать оператор SELECT, который суммирует заказы магазина гитары

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

Я получаю это сообщение об ошибке: Код ошибки 1055. Выражение № 3 из списка выбора не

Ответы [ 3 ]

0 голосов
/ 08 марта 2019

используйте количество в группе как ваш двигатель 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 голосов
/ 08 марта 2019

У вас есть количество столбцов, не входящих в группу по гайке, возможно, вам нужно переместить столбец внутри суммы te для item_price - discount_amount

    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
0 голосов
/ 08 марта 2019

используйте sum(quantity), поскольку вы используете агрегированную функцию, вы должны использовать ее также агрегированным образом, в противном случае ее необходимо добавить в группу по пункту

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...