Ik vermoed dat je niet echt wilt GROUP BY een_product.
Het antwoord op: "Is er een manier om GROUP BY een kolomalias zoals some_product in dit geval, of moet ik dit in een subquery en daarop groeperen?" is: U kunt niet GROUP BY een kolomalias.
De SELECT clausule, waar kolomaliassen worden toegewezen, wordt pas verwerkt na de GROUP BY clausule. Een inline view of Common Table Expression (CTE) kan worden gebruikt om de resultaten beschikbaar te maken voor groepering.
Inline-weergave:
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 ...