Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

SQL как вычислить новую колонку математикой из двух сгенерированных

Пришелец Мастер (1369), закрыт 4 года назад
есть таблица, нужно поделить колонку total_income на колонку num_payments и вывести в колонку average_income для ордеринга по ней, как это записать

select
- cs as customer,
- sum(case when stat = 'pc' then value else 0 end) as num_payments,
- sum(case when stat = 'ps' then value else 0 end) as total_income,
- month
from
- Stats
group by
- customer,
- month
order by
- average_income
Лучший ответ
Аглая Шниц Искусственный Интеллект (137849) 5 лет назад
а просто sum(...) / sum(...) не проканает?
ПришелецМастер (1369) 5 лет назад
не канает, пишет что новые столбци не найдены
ПришелецМастер (1369) 5 лет назад
хотя они добавляются если сделать запрос
Аглая Шниц Искусственный Интеллект (137849) хм, а если с подзапросом? update Stats set average_income = a.avg_income from Stats s join ( select cs, month, sum(case when stat = 'ps' then value end)/sum(case when stat = 'pc' then value end) as avg_income from Stats group by cs, month ) a on Stats.cs = a.cs and Stats.month = a.month
Остальные ответы
Сергей Плеханов Мудрец (10340) 5 лет назад
А просто total_income/num_payments не проходит? Тогда сделай несортированный запрос как View а потом к ней запрос делай с вычислением и сортировкой.
Похожие вопросы