Предполагам, че всъщност не искате да GROUP BY
някакъв_продукт.
Отговорът на: „Има ли начин да GROUP BY
псевдоним на колона, като some_product в този случай, или трябва да поставя това в подзаявка и да групира това?" е: Не можете да GROUP BY
псевдоним на колона.
SELECT
клауза, където са присвоени псевдоними на колони, се обработва едва след GROUP BY
клауза. Може да се използва вграден изглед или общ табличен израз (CTE), за да се направят резултатите достъпни за групиране.
Вграден изглед:
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 ...