Сокращение дубликатов SQL, деление на количество результатов подзапроса
Ребята!
Я столкнулся с проблемой здесь.
Я работаю с некоторыми записями, которые имеют много дубликатов. Каждая запись имеет три ключа: personID, CostCtr (центр затрат) и рабочее местоположение. Набор этих повторяющихся записей может выглядеть следующим образом:
PersonID Cost Ctr DaysInLocation DaysInMonth
1111 256 3 28
1111 256 0 28
1111 256 3 28
1111 243 15 15
1111 243 15 15
1111 243 0 15
Я хочу создать результат, который будет складывать все "daysInLocation" и делить его на количество "daysInLocation", которые не равны 0, и добавлять все daysInMonth, деленные на количество daysInMonth.
Результат будет выглядеть примерно так:
PersonID CostCtr DaysInLocation DaysInMonth
1111 256 3 28
1111 243 15 15
Я также смотрю, как разделить сумму (вещи)/ количество (подзапрос), где сумма (вещи) и количество (подзапрос) совместно используют один и тот же personID, CostCtr и другие ключи.
1 ответ
Это то, что вы хотите?
select personid, costctr
sum(daysinlocation) / sum(case when daysinlocation <> 0 then 1 else 0
end) as DaysInLocation,
sum(DaysInMonth) / count(DaysInMonth)
from table t
group by personid, costctr;
DaysInMonth
Выражение также может быть avg(DaysInMonth) as DaysInMonth
,