Это звучит, например, как:
SELECT productsubcategory, SUM(CASE WHEN quantity < 0 THEN 1 ELSE 0)/COUNT(*)
FROM t
GROUP BY productsubcategory
Это даст соотношение возвратов ко всем транзакциям. Если вы хотите, чтобы это было для каждого товара, а не для каждой транзакции, это было бы больше похоже на:
SELECT productsubcategory, SUM(CASE WHEN quantity < 0 THEN -quantity ELSE 0)/SUM(ABS(quantity))
FROM t
GROUP BY productsubcategory
Но будьте осторожны, как вы относитесь к количествам;Я предполагаю, что «продай 20 бисквитов, верни 15 бисквитов» - это в общей сложности 35 товарных движений, 15 из которых возвращаются. Я не знаю, хотите ли вы сделать вывод о том, что «15/20-е (75%) булочек были возвращены», и в этом случае доход составляет процент от продаж, а не процент от продаж + доход