Dugaan saya adalah Anda tidak benar-benar ingin GROUP BY beberapa_produk.
Jawaban untuk: "Apakah ada cara untuk GROUP BY alias kolom seperti some_product dalam kasus ini, atau apakah saya perlu memasukkan ini ke dalam subkueri dan grup di atasnya?" adalah: Anda tidak dapat GROUP BY alias kolom.
SELECT klausa, di mana alias kolom ditetapkan, tidak diproses sampai setelah GROUP BY ayat. Tampilan sebaris atau ekspresi tabel umum (CTE) dapat digunakan agar hasil tersedia untuk pengelompokan.
Tampilan sebaris:
select ...
from (select ... , CASE WHEN col1 > col2 THEN SUM(col3*col4) ELSE 0 END AS some_product
from ...
group by col1, col2 ... ) T
group by some_product ...
CTE:
with T as (select ... , CASE WHEN col1 > col2 THEN SUM(col3*col4) ELSE 0 END AS some_product
from ...
group by col1, col2 ... )
select ...
from T
group by some_product ...