Я использую MariaDB и имею две таблицы (orders, invoiced_positions), и мне нужно рассчитать, сколько из каждого элемента было выставлено и оплачено. Поэтому мне нужно посчитать строки и группы по item_name. Проблема в том, что некоторые пункты открываются заново, поэтому мне нужно вычесть количество повторно открытых счетов из тех, которые не были. В основном: я хочу сделать для всех элементов, чего я достиг здесь только для одного элемента:
SELECT
(SELECT COUNT(item_name = 'Streuselkuchen')
FROM orders, invoiced_positions
WHERE order_id = id AND reopened = 0)
- (SELECT COUNT(item_name = 'Streuselkuchen')
FROM orders, invoiced_positions
WHERE order_id = id AND reopened != 0) AS Difference;
Я думаю, что этого можно достичь с помощью условной агрегации, как показано здесь но я не смог применить это к моей конкретной задаче c.