Supongo que realmente no quieres GROUP BY
algún_producto.
La respuesta a: "¿Hay alguna forma de GROUP BY
un alias de columna como some_product en este caso, o necesito poner esto en una subconsulta y agrupar eso?" es: No puedes GROUP BY
un alias de columna.
El SELECT
cláusula, donde se asignan alias de columna, no se procesa hasta después de GROUP BY
cláusula. Se podría usar una vista en línea o una expresión de tabla común (CTE) para que los resultados estén disponibles para agruparlos.
Vista en línea:
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 ...
CET:
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 ...