Это моя таблица, в которой хранится идентификатор с его количеством и ценой. Я хотел бы суммировать qty по цене. Иногда qty может показывать 0, если qty - отрицательное значение. Таким образом, я не буду показывать цену падения qty в 0, когда группа по цене.
id | id_item | qty | price
1 1 10 1.00
2 1 15 2.00
3 1 10 1.00
4 2 5 2.00
5 2 5 2.50
6 3 10 1.00
7 3 10 1.00
8 3 5 1.00
Это то, что я пробовал.
Select id_item, price, sum(qty) as total from sales group by id_item, price having total !=0;
Result
id_item | qty | price
1 20 1.00
1 15 2.00
2 5 2.00
2 5 2.50
3 10 1.00
Ожидаемый результат с concat
id_item | qty | price
1 20,15 1.00,2.00
2 5,5 2.00.2.50
3 10 1.00
Как я могу достичь результата, как показано?
Я думаю, вам нужны два уровня агрегации:
select id_item, group_concat(total order by price) as quantities,
group_concat(price order by price) as prices
from (Select id_item, price, sum(qty) as total
from sales
group by id_item, price
having total <> 0
) s
group by id_item;