Преди всичко трябва да знаете, че създаването на временна таблица е абсолютно осъществимо решение. Но в случаите не е приложим друг избор, което не е вярно тук!
Във вашия случай можете лесно да увеличите заявката си като FrankPl посочено, защото и подзаявката, и основната ви заявка се групират по едно и също поле. Така че нямате нужда от никакви подзаявки. Ще копирам и поставям решението на FrankPl за пълнота:
SELECT o.property_B, SUM(o.score1), SUM(o.score2)
FROM o
GROUP BY property_B;
Но това не означава, че е невъзможно да попаднете на сценарий, при който искате да можете да индексирате подзаявка. В кои случаи имате два избора, първият е да използвате временна таблица, както сте посочили сами, като съхранявате резултатите от подзаявката. Това решение е изгодно, тъй като се поддържа от MySQL за дълго време. Просто не е възможно, ако има огромно количество данни.
Второто решение е използването на MySQL версия 5.6 или по-нова . В последните версии на MySQL са включени нови алгоритми, така че индекс, дефиниран в таблица, използвана в рамките на подзаявка, може да се използва и извън подзаявката.
[АКТУАЛИЗИРАНЕ]
За редактираната версия на въпроса бих препоръчал следното решение:
SELECT o.property_B, SUM(IF(o.property_A = 'specific_A', o.score1, 0)), SUM(o.score2)
FROM o
GROUP BY property_B
HAVING SUM(IF(o.property_A = 'specific_A', o.score1, 0)) > 0;
Но трябва да работите върху HAVING
част. Може да се наложи да го промените според действителния си проблем.