No SQL padrão (mas não no MySQL), ao usar GROUP BY, você deve listar todas as colunas de resultado que não são agregadas na cláusula GROUP BY. Portanto, se
order_details
tem 6 colunas, então você deve listar todas as 6 colunas (por nome - você não pode usar *
nas cláusulas GROUP BY ou ORDER BY) na cláusula GROUP BY. Você também pode fazer:
SELECT order_no, SUM(order_price)
FROM order_details
GROUP BY order_no;
Isso funcionará porque todas as colunas não agregadas estão listadas na cláusula GROUP BY.
Você poderia fazer algo como:
SELECT order_no, order_price, MAX(order_item)
FROM order_details
GROUP BY order_no, order_price;
Esta consulta não é realmente significativa (ou provavelmente não é significativa), mas 'funcionará'. Ele listará cada combinação de número de pedido e preço de pedido separado e fornecerá o item de pedido máximo (número) associado a esse preço. Se todos os itens em um pedido tiverem preços distintos, você terminará com grupos de uma linha cada. OTOH, se houver vários itens no pedido com o mesmo preço (digamos £ 0,99 cada), ele os agrupará e retornará o número máximo do item do pedido nesse preço. (Estou assumindo que a tabela tem uma chave primária em
(order_no, order_item)
onde o primeiro item do pedido tem order_item = 1
, o segundo item é 2, etc.)