Предположим, у меня есть таблица с заказами с столбцами доходов и состояния. Я хочу группировать заказы по группе доходов (сгруппированы с шагом в 10) и получить процент от того, что их столбец статуса установлен равным 1 в соответствующей группе доходов. Я думал, что функция окна была путь, но где оператор ограничивает столбцы, так что я в конечном итоге только с колоннами, где статус == 1. Конечный результат будет выглядеть примерно так: 10 | 76%
, 20 | 50%
и т.д.Вычисление процента GROUP_BY с оператором WHERE
SELECT CASE
WHEN revenue between 1 and 10 then 10
WHEN revenue between 10 and 20 then 20
WHEN revenue between 20 and 30 then 30
WHEN revenue between 30 and 40 then 40
WHEN revenue between 40 and 50 then 50
else 60
END as revgroup,
COUNT(*)/CAST(SUM(count(*)) over (partition by CASE
WHEN revenue between 1 and 10 then 10
WHEN revenue between 10 and 20 then 20
WHEN revenue between 20 and 30 then 30
WHEN revenue between 30 and 40 then 40
WHEN revenue between 40 and 50 then 50
else 60 END) as float) as percentage
from "order"
where "order".status = 1
group by revgroup