Hádám, že ve skutečnosti nechcete GROUP BY
nějaký_produkt.
Odpověď na: "Existuje způsob, jak GROUP BY
alias sloupce, jako je v tomto případě some_product, nebo to musím vložit do poddotazu a seskupit to?" je: Nemůžete GROUP BY
alias sloupce.
SELECT
klauzule, kde jsou přiřazeny aliasy sloupců, se zpracuje až po GROUP BY
doložka. Ke zpřístupnění výsledků pro seskupování lze použít vložený pohled nebo společný tabulkový výraz (CTE).
Inline zobrazení:
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 ...