La mia ipotesi è che tu non voglia davvero GROUP BY
qualche_prodotto.
La risposta a: "C'è un modo per GROUP BY
un alias di colonna come some_product in questo caso, o devo inserirlo in una sottoquery e raggrupparlo?" è: Non puoi GROUP BY
un alias di colonna.
Il SELECT
La clausola, in cui vengono assegnati gli alias di colonna, non viene elaborata fino a dopo il GROUP BY
clausola. È possibile utilizzare una vista in linea o un'espressione di tabella comune (CTE) per rendere i risultati disponibili per il raggruppamento.
Vista in linea:
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 ...